浅谈构建嵌入式linux入门

提示:对于想从单片机转型到嵌入式linux的工程师必看。


前言

对于想从单片机转型到嵌入式Linux的工程师而言,目前市面上的开发板、教学视频种类繁多,让人眼花缭乱,基本上一上来就是在Linux下一顿操作,最后通过nfs等手段下载在开发板上,实现了想要的功能,说实话干单片机的工程师,有几个看得懂这些操作背后干了什么,涉及的过程是什么,用了哪些软件等等,本人始终想要把其中的过程讲清楚说明白,一定要从全局到局部的讲解,通过反复学习某位大佬的开发板和写的书,有些以前一直不理解找不到答案的概念,使用人工智能(不懂的概念就去问他)等手段,慢慢对其中的过程有了一定的了解,只能说人工智能大大降低了学习难度。


一、嵌入式linux系统的基本组成

1.硬件

  1. SOC(CPU、MMU、内部内存(SRAM))
  2. 外部内存(SDR SDRAM、DDR SDRAM)
  3. 外部“硬盘”(NOR\NAND Flash 、 SD卡等)

2.软件

  1. u-boot
  2. linux内核
  3. 根文件系统
  4. 设备树

二、嵌入式linux开发工具

1.必要的PC端软件

  1. 交叉编译工具(Linux)
  2. linux内核
  3. 其他串口(Windows)、ftp等工具(Windows、Linux)

2.软件源码

  1. u-boot
  2. linux内核
  3. busybox

三、u-boot 编译bin文件

  1. 配置:make smdk2410_config,就是make命令(软件去找到顶层makefile的内容,执行里面的内容),会生成.config文件
  2. 编译链接:make all,又去make命令(软件去找到顶层makefile的内容,执行里面的内容),最后生成.bin文件
    注意:make命令和makefile是功能强大的组合,make smdk2410_config会执行PC端一些上位机软件生成.config文件,
    make all又会调用交叉编译工具生成在ARM可以运行的bin文件,所以make命令和makefile其实是去调用其他的软件干活
    而且有时候会调用PC端的GCC去编译生成PC的软件,这就是为什么编译嵌入式linux内核的时候会生成一些软件,不知道的还以为是arm-linux-gcc编译出来的,具体要看makefile里面内容

四、linux内核编译成uImage、zImage、vmlinux

五、构建根文件系统之busybox

  1. 配置:make menuconfig,就是make命令(软件去找到顶层makefile中menuconfig的内容,执行里面的内容),会生成.config文件
  2. 编译:make,使用arm-linux-gcc编译busybox的源码,生成的是一个可以在嵌入式linux环境中可以运行的程序busybox,其他的如在嵌入式linux之执行ls,就是调用的busybox ls,ls只不过是busybox软件的一个参数,所以他们也叫ls是到busybox的符号链接
  3. 安装:make CONFIG_PREFIX=/work/nfs_root/fs_mini intall,会在/work/nfs_root/fs_mini文件中生成一些文件夹和可以在嵌入式linux运行的命令(软件)

六、构建根文件系统之其他文件夹

七、制作烧写到nand flash中文件系统映像

  1. 下载ysffs源码
  2. 编译: make 貌似源码中会有makefile,里面应该有使用gcc编译源码,这样就生成了在PC端Linux可以运行的上位机mkyaffsimage
  3. 拷贝:将上一个阶段生成的上位机复制到PC端Linux的系统路径/usr/local/bin中,这样就可以在电脑终端上运行mkyaffsimage生成yaffs格式的印象文件,如fs_mini.yaffs

总结

我们所有的疑问目前是卡在嵌入式linux内核和makefile,嵌入式linux内核是因为我们不知道它是怎么玩的,他怎么就可以识别yaffs格式的印象文件,它怎么就可以运行使用arm-linux-gcc编译的应用程序,应用程序在哪里运行,arm-linux-gcc不是编译bin文件用的吗,运行库是什么东西,linux内核是如何解析文件系统,如何解析自己并运行的,这些后面一一解答,我们其实可以参考windows系统,只要内核运行起来的就想windows一样了,大家就不用关系细节了,现在还有一点就是ARM中断和linux异常处理的联系和区别没有搞懂???还有就是makefile因为功能太强大了,里面有各种符号,如何一级一级调用下一层的makefile,这个有点复杂!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值