今天开始我的嵌入式学习就正式开始了,以后这个账号就会发布关于我学嵌入式的一些心得和体会。以及我的学习进度。
基础概念
一、什么是嵌入式?
嵌入式这个概念很模糊,传统的单片机开发可以称为嵌入式开发,linux开发也可以称之为嵌入式开发,这种技术如果往细了讲涉及到的方方面面就太多了。下面我来说说自己的理解,我认为的嵌入式开发有两个含义,第一种就是字面意思将芯片或者是某种智能模块嵌入某个载体内,在此基础上上做开发可以称之为嵌入式开发。还有一种含义也就是在芯片或者单片机上移植操作系统或者设计操作系统也可以称之为嵌入式开发。从大方向来说,这两个观点一个是硬件层面上的,一个是软件层面上的。学过嵌入式的也知道嵌入式开发就是一门软件和硬件开发结合的技术。
以上就是我对嵌入式开发的一些自己的理解,如果有说的不对的地方,还请各位大佬指正。
二、什么是操作系统?
如果是做嵌入式软件开发相关工作的话,肯定和操作系统脱离不了干系。那么什么是操作系统,在学习c51单片机的时候,我们需要在51单片机上做开发就肯定要对照原理图以及datasheet搞清楚单片机引脚与外设或者外围电路之间的关系,根据硬件接口来写我们的代码,这就导致了如果换一个开发板或者换一个引脚都会让我们的代码直接失效。也就是代码不具备通用性,这样也会导致开发效率变低等等。
这时候操作系统的作用就体现出他的优点了,那么操作系统是什么呢。我们可以把操作系统理解为软件和硬件之间的桥梁,在操作系统上开发我们就不需要去看硬件的原理图,通过写入代码完成特定功能也只需要向操作系统发出命令即可。操作系统就负责将命令传输给硬件电路从而实现相关的一些功能。比如说你在手机上想要打开摄像头只要点击相机就可以打开摄像头。这其中就有安卓操作系统来帮我们实现相关功能。
市面上常见的桌面端操作系统有linux、Windows、macos等等,除了这些桌面端操作系统还有一些实时操作系统,实时操作系统的含义就是在规定时间内做出相应操作的系统我们称之为实时操作系统。市面上的实时操作系统有FreeRTOS,RT-Thread,ucos等等。
Linux操作系统
一、Linux操作系统的文件结构
linux: /根目录
lib/:Linux操作系统运行的库文件
lost+found:非法关机的时候备份文件
etc:配置文件
usr:第三方库,用户配置的应用程序和文件
bin:系统资源文件
home:用户主目录
root:超级管理员用户目录
boot:操作系统启动的核心文件
dev:设备文件
二、Linux操作系统的命令集
这是我今天学习的部分命令集,以后还会更新,下面是链接:有道云笔记 (youdao.com)
三、gcc编译的步骤
gcc编译的四个步骤分别是:
1.预处理(生成的是.i预处理文件)
gcc -E 1.c -o 1.i
这个步骤主要是将头文件展开 ,进行宏定义替换,以及删除注释
2.编译(生成.s汇编文件)
gcc -S 1.i -o 1.s
3.汇编(生成.o目标文件)
gcc -c 1.s -o 1.o
4.链接(生成.out文件<linux上的可执行程序>)
gcc 1.o -o 1