
跟涛哥一起学嵌入式
宅学部落-王利涛
这个作者很懒,什么都没留下…
展开
-
如何快速构建嵌入式全栈知识体系
嵌入式是一门交叉学科。一个嵌入式电子产品(比如手机)从底层到上层,一般会涉及半导体芯片、电子电路、计算机、操作系统、多媒体等不同专业领域的知识。很多从事嵌入式开发的朋友,通常来自不同的专业(电子、电气、计算机、机械、自动化、物理,甚至一些文科专业),在实际学习和开发中,由于专业背景的限制,经常会遇到各种技术壁垒:搞硬件的不懂软件,搞软件的不懂硬件,搞底层芯片的不懂上层软件,搞上层软件的不懂底层芯片。嵌入式技术栈太深,除了极少数人,一般人很难实现“技术破圈”,将整个技术栈从上到下捋一遍,彻底打通。相对于桌原创 2021-04-27 08:16:40 · 3039 阅读 · 11 评论 -
跟涛哥一起学习嵌入式 32:Linux内核编译和启动分析
在Linux环境下,我们想运行一个应用程序,在shell交互环境下直接敲命令就可以了,操作系统给程序提供了运行环境和进程管理。那Linux操作系统本身是如何运行和启动的呢?在分析之前,我们先做一个Linux内核启动的实验:通过u-boot加载Linux内核镜像uImage到内存不同地址,观察Linux内核启动流程。实验环境:硬件平台:使用 QEMU 仿真ARM vexpress A9 开发板 RAM大小配置:512 MB RAM内存地址:0x60000000 ~ 0x7FFFFFFF实验过程:原创 2020-05-15 17:46:56 · 554 阅读 · 0 评论 -
跟涛哥一起学嵌入式 31:深入浅出CPU流水线工作原理
现在的CPU处理器一般都是超流水线工作,动不动就是10级以上流水线,超高主频,这两者之间有什么关系呢?今天就跟大家科普下CPU流水线的工作原理,以及他们之间的关系。说到流水线,很多人会想到富士康;说到富士康,很多人会想到张全蛋。作为富士康 3 号流水线资深质检员,下面就请张全蛋给大家科普下什么是流水线,大家鼓掌欢迎。Micheal Jack 眼中的流水线大家好,我是张全蛋,英文名叫Micheal Jack,法文名叫霍雷呆-杰Q赖,大家也可以叫我查理。作为iPhone 手机 3 号流水线的资.原创 2020-05-15 17:44:40 · 3376 阅读 · 0 评论 -
《嵌入式工程师自我修养》学习路线指南
原创 2020-03-10 18:19:47 · 1445 阅读 · 0 评论 -
跟涛哥一起学嵌入式 28:Linux下的时间管理和定时器编程
时间是我们生活中非常重要的一个概念,我们的生活处处离不开时间:你跟朋友定在晚上7点去吃火锅;你老板让你半个小时后去他办公室;还有一周就要放假过年了...。在现代社会中,没有时间的度量,我们的生活将寸步难行。除非你去终南山隐居,去过日出而作,日落而息的生活。计算机中处处需要时间在计算机系统中,也是处处需要时间,离开时间寸步难行:你的电影播放时间、系统日志log、QQ 微信聊天记录、电脑每周一...原创 2020-01-18 15:09:06 · 329 阅读 · 0 评论 -
跟涛哥一起学嵌入式 27:一个小故事,让你明白进程、线程和协程的区别
进程、线程和协程,是多任务编程中的常用术语。很多初学者分不清它们之间的区别,今天就以一个小故事为引子,让大家搞清楚他们之间的本质区别。话说在西凉女儿国,大唐文化传播有限公司CEO唐僧招聘了三个员工做游戏直播,他们分别是:孙悟空、猪八戒和沙僧。唐僧分别给他们租了三套一室一厅的房子,独门独户,他们三个每人各住一套,独享各自的卫生间和厨房,互不干扰。这有点类似于进程,在Linux环境下,每个进程有...原创 2020-01-18 15:08:09 · 371 阅读 · 0 评论 -
跟涛哥一起学嵌入式 26:深入浅出计算机编码、乱码问题
很多新手在编写程序、使用软件打开文档或者浏览网页时,经常遇到乱码显示、全角半角的问题。网上也有很多解决的方法,大部分都是跟编码有关:比如Unicode、UTF-8、ASCII码、GB2312...,令人眼花缭乱,今天就给大家理一理它们之间的关系。计算机只认识0和1这两个数字,我们输入的程序代码、文字都要经过编码,然后才能被计算机识别、解析和存储。早期的计算机环境是主要是英文,我们...原创 2020-01-18 15:07:11 · 262 阅读 · 0 评论 -
跟涛哥一起学嵌入式 20:一段C语言代码编译、运行全过程解析
很多嵌入式初学者,不明白一个简单的C语言程序,是如何通过一步步编译、运行变成一个可运行的可执行文件的,程序到底是如何运行的?运行的过程中需要什么环境支持?今天就跟大家一起捋一捋这个流程,搞清程序编译、链接、加载、运行的整个脉络,以及在运行过程中的内存布局、堆栈变化。1. 程序的编译、链接过程就以hello.c为例:从一个C语言源文件,到生成最后的可执行文件,基本流程如下;C 源文...原创 2020-01-18 16:39:22 · 662 阅读 · 0 评论 -
设计一款CPU到底有多难?
文章结构导读 一颗芯片是怎么诞生的? 一款CPU是如何设计出来的? 设计一款CPU到底难在哪里?导读这几天,刷遍朋友圈的新闻就是:中兴被“一剑封喉”,被美国停止一切芯片进口和系统软件服务。这对于芯片依赖美国的中兴来说,基本上一下子就处于休克状态,上下游的生产线面临停产,8万员工前途未卜。中兴事件给IT/IC届带来的冲击,甚至给普通百姓带来的冲击相当大,以至于各个自媒体、公众...原创 2020-01-18 15:15:38 · 1548 阅读 · 0 评论 -
你为什么看不懂Linux内核驱动源码?
学习嵌入式Linux驱动开发,最核心的技能就是能够编写Linux内核驱动、深入理解Linux内核。而做到这一步的基础,就是你要看得懂Linux内核源码,了解其基本的框架和具体实现,了解其内核API的使用方法,然后才能根据自己的需求写出高质量的内核驱动程序。说易行难,很多新人、甚至工作1-2年的开发者刚接触Linux内核时,别说写了,看内核代码可能都是一脸懵逼:明明是C语言,但是就是看不懂是什么...原创 2018-04-28 14:34:05 · 5507 阅读 · 0 评论 -
跟涛哥一起学嵌入式 20:后ARM时代,嵌入式工程师的自我修养
1 嵌入式学习的一些概念理解误区很多嵌入式初学者认为,学嵌入式,就是学习ARM,就是学习开发板。买一块开发板,然后在上面“移植”u-boot、Linux内核,再使用busybox制作一个根文件系统,大功告成!觉得可以出去找工作了。这其实是有一定片面性的:首先ARM是个CPU架构,跟PC上的X86架构一样,你见过有人在Windows下面学习C/C++编程、MFC编程、网络编程、互联网编程,...原创 2017-07-13 20:25:10 · 8148 阅读 · 1 评论 -
跟涛哥一起学嵌入式 19:从零实现一个shell解释器
shell初体验在Linux环境下工作,我们经常去打开一个Terminal终端,然后在终端下敲入shell命令和运行,如:在终端下运行ls命令我们也可以编写一个简单的脚本文件并运行它shell脚本的编辑、修改权限和运行爱好思考的同学可能就会有疑问了:为什么我们在终端下敲入命令,就可以直接运行? 为什么我们在终端下可以直接运行一个脚本? 这个脚本是如何运行的? ...原创 2019-11-06 17:07:43 · 447 阅读 · 0 评论 -
跟涛哥一起学嵌入式 18:Autotools发展史
在linux下面撸过代码、做过开发的,想必都听说过Makefile。对,是Makefile,不是make love。如果你看成了后者,只能说:同志,你的三观有问题,需要格式化你的硬盘!在linux开发程序,没有集成开发环境IDE(integrated development environment),没有VC++6.0,只有Makefile和冰冷黑漆漆的shell窗口,寒冷的夜...原创 2017-01-17 21:15:55 · 617 阅读 · 0 评论 -
跟涛哥一起学嵌入式17:Makefile,学习linux及开源软件的瑞士军刀
在linux下面安装软件,我们经常使用的命令是:./configuremakemake install很多人不知道,为什么我们敲入这几个命令,我们的源码文件就开始编译成可执行程序了?而且在shell控制窗口还会有逼格地显示不断滚动的字符雨,显得特别高大上。其实,这一切,都是makefile在背后“搞鬼”,makefile文件里,定义了我们编译源文件的规则,make命令就是根...原创 2017-01-05 21:15:47 · 712 阅读 · 0 评论 -
跟涛哥一起学嵌入式 16:设计一款CPU芯片到底有多难?
文章结构 导读 一颗芯片是怎么诞生的? 一款CPU是如何设计出来的? 设计一款CPU到底难在哪里? 导读这几天,刷遍朋友圈的新闻就是:中兴被“一剑封喉”,被美国停止一切芯片进口和系统软件服务。这对于芯片依赖美国的中兴来说,基本上一下子就处于休克状态,上下游的生产线面临停产,8万员工前途未卜。中兴事件给I...原创 2018-04-28 14:19:24 · 12505 阅读 · 12 评论 -
跟涛哥一起学嵌入式 15:Linux进程间通信10分钟快速入门
在Linux环境下运行程序,无论是点击桌面上的一个图标,还是在命令行下敲击一个shell命令,Linux系统都会把我们的程序“包装”成一个进程的形式,然后调度运行:每个进程轮流占用CPU一段时间去执行,时间到了就让给其它进程,时间片轮转,只要轮转得速度足够快,就会给用户一种错觉:我们在电脑上一边听歌,一边打字,感觉多个程序在同时运行。不同进程在运行过程中,根据业务需要,进程相互之间也会通信:比如传...原创 2019-08-04 06:31:59 · 185 阅读 · 0 评论 -
跟涛哥一起学嵌入式 14:Linux下的进程江湖
有人的地方,就有江湖Linux进程也不例外有进程的地方,也有江湖那些年,奢望金盆洗手的江湖大佬们按照武侠世界的套路:一旦一个高手决定金盆洗手、隐退江湖,往往下场会很惨、甚至引发整个武林动荡。比如衡山派的刘正风,早已厌倦了江湖,打算去当一个音乐家,整了个金盆洗手大会,结果被嵩山派搞得家破人亡。再比如飞虎镖局老板吕腾空在金盆洗手大会现场,又稀里糊涂接了一个大镖,天魔...原创 2019-03-20 07:08:13 · 251 阅读 · 0 评论 -
跟涛哥一起学嵌入式 13:嵌入式学习三剑式
前言学习一门技术犹如修炼一门武功。在成为高手的路上,无数英雄豪杰不尽相同,按照武侠小说的套路,大侠之所以成为大侠,绝对不可能平平淡淡,肯定有一段开挂的传奇人生:要么被关入湖底,偶然发现前辈留在石壁上的心法;要么被罚上思过崖面壁思过,一不小心发现破解剑法;要么身受内伤,被人推下悬崖,一不小心发现一个隔世的前辈大师急需找传人,被迫输入内功赋能......然而现实当中,很多人往往没有这...原创 2019-03-20 06:59:25 · 597 阅读 · 0 评论 -
跟涛哥一起学嵌入式 第12集:关于 apt-get 软件安装那些事儿
对于很多linux/ubuntu新手来说,要想在Ubuntu系统上熟练地安装、升级、卸载软件,确实是挺考验人的一件事,会遇到各种各样的问题,有时候会把人搞得很不耐烦,打击人的学习积极性。Ubuntu一般使用apt-get命令 (ubuntu16.04版本以后也可以使用apt) 来安装、升级、卸载软件。比如我们想安装一个软件,常用下面的命令进行安装: $ apt-get install...原创 2018-11-26 15:13:34 · 318 阅读 · 0 评论 -
跟涛哥一起学嵌入式 第11集:一个实现锁机制非常有意思的宏
QQ群(宅学部落)有位学员问了一个很奇怪的宏,觉得很有意思,特拿来分享,它的定义如下:我们知道,宏定义其实就是为了方便,给一串代码字符串定义一个别名。有时候字符串过于复杂,我们可以分多行书写,然后使用逻辑连接符“\”连接起来,表示一个完整的字符串。但是分析上面的宏定义,你会发现它分别定义了2个宏,但是呢,又使用了一对大括号括起来,很有欺骗性:看起来很像语句表达式,但是呢,有没有小括号括起...原创 2018-11-17 11:26:21 · 237 阅读 · 0 评论 -
跟涛哥一起学嵌入式 第10集:关于校招,应届生都应该看一看
金九银十,是应届生求职的黄金时期。每年这个时候,各大企业、名企一般都会到校园去做各种宣讲、面试招聘。对于大部分应届生来说,通过校园招聘渠道,找到一份靠谱工作的概率远远胜过社会招聘。然而很多应届生却对校招的重视度不够、准备不充分,结果跟一些好的工作机会错失交臂。尤其是一些福利待遇、发展空间较好的大公司、名企,错过校招这个机会,以后再想从社招其他渠道应聘,难度往往会大很多。校招对应届生为什么如此重...原创 2018-09-23 07:26:50 · 643 阅读 · 0 评论 -
跟涛哥一起学嵌入式 第09集:ARM启动过程中你不知道的小秘密
学过嵌入式、玩过开发板的同学可能都知道这些常识:我们的ARM开发板有多种启动方式,可以从NORFlash启动、可以从NANDFlash启动、也可以从SD卡启动。当系统上电后,ARM会从U-boot启动,然后U-boot将自身代码拷贝到内存DDR SDRAM中,接着PC指针指向内存,从内存中不断地取指令、翻译指令、运行指令。然而,现实果真如此吗?U-boot是系统上电运行的第一行代码吗?ARM支...原创 2018-09-23 07:22:49 · 483 阅读 · 0 评论 -
跟涛哥一起学嵌入式 第08集:ARM跳转指令深度剖析
跳转指令顺序、选择、循环是构建程序的基本结构,任何一个逻辑复杂的程序基本上都可以由这三种程序结构组合而成。而跳转指令,则在子程序调用、选择、循环程序结构中被大量使用。程序的跳转是如何实现的呢?在了解这个机制之前,我们需要先了解一下程序计数器PC。程序计数器PC,是CPU的寄存器列表中最重要的一个寄存器。它就像一杆枪,指哪打哪:你给PC指针赋值哪个地址,CPU就会到PC指针指向的这个地...原创 2018-09-23 07:17:27 · 510 阅读 · 1 评论 -
跟涛哥一起学嵌入式 第07集:GNU/Linux和Linux的区别
GNU、GNU/Linux、Linux 之间到底是什么关系?什么是自由软件?什么是GPL协议?什么是自由软件基金会?什么是GNU耻辱榜?有多年开发经验的Linux工程师,估计也没怎么关注过这些问题。今天就以自由软件发展的角度,给大家科普一下它们之间的关系。想了解他们之间的关系,从Windows说起估计比较容易理解。Windows操作系统,大家都很熟悉:当微软发布OS新版本,你迫不及待地把它安装...原创 2018-09-23 06:52:50 · 419 阅读 · 0 评论 -
跟涛哥一起学嵌入式 第06集:后ARM时代,嵌入式工程师的自我修养
大家好,我是涛哥,今天我们继续聊一聊嵌入式的学习,由于最近比较忙,就把以前写的一篇文章重新发给大家,里面谈到的一些学习方法和学习经验,还是很值得参考一下的。 嵌入式学习的一些概念理解误区很多嵌入式初学者认为,学嵌入式,就是学习ARM,就是学习开发板。买一块开发板,然后在上面“移植”u-boot、Linux内核,再使用busybox制作一个根文件系统,大功告成!觉得可以出去找工作了。这其...原创 2018-09-23 06:50:26 · 1094 阅读 · 1 评论 -
跟涛哥一起学嵌入式 第05集:一道程序改错题,测出你的嵌入式功底
大家好,欢迎阅读《跟涛哥一起学嵌入式》第05集,我们今天讨论一下中断的基本概念。中断,是嵌入式开发中经常使用的一个功能,也是嵌入式工程师必须要掌握的一个概念:CPU和外设通信时,一般都采用中断的形式异步通信,可以大大提高CPU资源的利用率。而你对中断的理解,到底有多少呢?不要急,一道程序改错题,就可以测出你的嵌入式系统功底。比如,我们在嵌入式ARM裸机平台上,要实现一个MP3播放器,要求实现如下功...原创 2018-07-06 09:05:05 · 489 阅读 · 0 评论 -
跟涛哥一起学嵌入式 第04集:一道面试题,测出你的C语言功底
大家好,我是涛哥,欢迎阅读《跟涛哥一起学嵌入式》第04集,今天聊聊面试题。嵌入式C语言面试题中,大家经常会看到宏定义的考题。比如:定义一个宏,求两个数中的最大数。别小看这个考题,虽然简单,但是它却陷阱不断,时刻在考验着你的C语言编程功底!根据你的答案,面试官对你的印象肯定不一样。那下面我们看看各个不同版本的答案吧。合格对于学过C语言的同学,写出这个宏基本上不是什么难事,使用条件运算符就能完成:#d...原创 2018-07-03 20:06:06 · 581 阅读 · 1 评论 -
跟涛哥一起学嵌入式 第03集:嵌入式要从u-boot移植学起?
大家好,我是涛哥,欢迎阅读《跟涛哥一起学嵌入式》第3集。俄罗斯仲夏夜,世界杯依旧如火如萘。球场上,夕阳下,梅西没落的身影、C罗的黯淡离场,并没有打击大家太多的热情。战火依旧,老兵不死,梅罗时代是否快要终结?然而新一代巨星冉冉升起,风起云涌。在看球的同时,学习充电也不能落下,今天我们聊聊第3个话题:学习嵌入式,一定要从u-boot移植学起吗?嵌入式真要从U-boot移植学起?故事缘起嵌入式技术群(4...原创 2018-07-02 09:51:15 · 450 阅读 · 0 评论 -
跟涛哥一起学嵌入式 第02集:工作还是考研?
大家好,我是涛哥,今天我们聊聊第一个话题:工作还是考研。工作与考研,是每个大三大四学生都要去纠结一下的问题,也是一个很难做抉择的话题。对自己的现状不满意,蹉跎了岁月,感觉自己学得不够多,没学到什么技能;对自己能否找到工作、自己能否胜任未来的工作没有自信;高考失利,进了一所非211/985大学,在大学浑浑噩噩已经混了一半时间了,每天吃鸡推搭、小玛利亚,不想再这样颓废下去,想通过考研改变自己。这些都会...原创 2018-07-01 09:34:40 · 1219 阅读 · 1 评论 -
跟涛哥一起学嵌入式 -- 第01集:say you say me
大家好,此时此刻,2018俄罗斯世界杯已暂告一段落,16强已经产生,卫冕冠军德国队提早回家,阿根廷起死回生,C罗一个30多高龄的年纪,还在坚持健身,一身腱子肉,在球场上挥洒青春,演绎着帽子戏法,给观众带来一场场精彩的视觉盛宴。世界杯的最大魅力之处也许就在于其不确定性。在这足球之夜,《跟涛哥一起学嵌入式》专栏也开始了,关于嵌入式学习、路线、就业、面试相关的问题,我会坚持一点一点地写下去。C罗,一个8...原创 2018-06-29 23:14:23 · 446 阅读 · 1 评论