bsp的分析
来源:互联网 发布:windows安全性 编辑:程序博客网 时间:2024/06/05 08:06
以下内容源于朱有鹏《物联网大讲坛》课程的学习整理,如有侵权,请告知删除。
一、X210的bsp介绍
1、嵌入式linux产品的bsp介绍
- ARM+linux形式的bsp,内容和结构都是相似的。
- bsp由芯片厂家或板卡厂家提供的,交付时会提供bsp。
2、X210的linux+QT bsp整体介绍
- tslib_x210_qtopia.tgz,是用来支持QT的触摸屏操作的应用层库;
- xboot和uboot是X210支持的2个bootloader源代码;
- kernel,文件夹中是内核源代码;
- buildroot文件夹,用来构建根文件系统的文件夹;
- tools,一些有用工具;
- mk,用来管理和编译整个bsp。
3、mk的帮助信息
(1)Linux下,执行程序时加-h或者--help就可以看到这个程序执行的帮助信息。
- 这里可以在此目录下输入mk -h查看mk的帮助信息。
(2)mk脚本的主要作用是编译。
- 可以完整编译也可以部分编译;
- 通过执行mk xxx,mk后面加不同的参数来指定mk脚本去编译相应的部分。
mk -a 即可编译所有的bsp源代码
mk -x 即可只编译xboot
mk -ui 即可只编译uboot针对inand版本开发板的源代码
mk -r 即可只编译buildroot,-r只是得到了文件夹形式的rootfs,并没有将其制作成镜像文件。
mk -re 即可编译buildroot并且制作得到ext3格式的rootfs镜像
mk -rj 即可编译buildroot并且制作得到jffs2格式的rootfs镜像
(4)
- ./mk和mk都是执行mk这个脚本文件,区别在于./mk是带路径的,mk是不带路径的。
- 还有source mk,这个和前两个的区别是source执行时不需要mk文件具有可执行权限,而前面两种要求mk必须在当前用户下具有可执行权限。
二、mk文件分析
(1)shell脚本程序分为:变量定义、函数、代码。
- shell脚本程序的结构非常类似于C语言程序;
- shell程序和C语言程序很大的一个差别就是shell没有main函数,shell脚本执行时也是先执行主函数的,不过主函数没有放在一个类似于main这样的函数中,而是直接放在全局下的一些代码。
- shell程序执行时首先执行变量定义,然后执行主函数,其他函数在主函数代码中被调用执行。
(2)怎么实现控制编译哪个不编译哪个?
- 用一个函数来完成编译一个(譬如编译内核用build_kernel函数,编译inand的uboot用build_bootloader_uboot_inand);
- 然后用相应的一些变量来控制这个函数要不要被编译(譬如uboot_inand变量=yes就表示要编译inand版本的uboot,=no就表示不要编译);
- 编译时通过-xxxxx来传参时,这些传参会影响这些变量的值=yes或者=no
- 如果我们直接./mk并不传参,则$1为空,这时候按照一套默认的配置来编译。
三、buildroot引入
1、buildroot作用介绍
(1)之前从零开始构建根文件系统,步骤比较麻烦。
(2)交叉编译工具链arm-linux-gcc
- 之前都是从soc官方直接拿来使用的,但官方的工具链从何而来?
- 实际上交叉编译工具链都是由gcc配置编译生成的。
(3)buildroot是一个集成包
- 集成了交叉编译工具链的制作,以及整个rootfs的配置编译过程。
- 即使用buildroot可以很简便的得到一个做好的文件夹形式的根文件系统。
- 在buildroot的配置界面下完成集成在里边的所有东西的配置,然后直接make,最终可以得到文件夹形式的rootfs。
2、make x210ii_defconfig
(1)先make xxx_defconfig
(2)make menuconfig
(3)make
3、make及其错误解决
(1)直接make会遇到很多错误,这些错误原因都是因为ubuntu中缺乏一些必要软件包造成的。解决方案是先安装这些必要的软件包。
(2)编译过程会需要从网上下载一些软件包,因此整个编译过程需要在联网状态下进行。
4、编译后结果查看与分析
- 编译后生成的文件夹格式的rootfs在buildroot/output/images/rootfs.tar。
- 将其复制到根目录下的release目录中,这个文件就是一个完整的、可以工作的、文件夹形式的rootfs。
阅读全文
0 1
- bsp的分析
- 基于SMDK6410的BSP包结构分析
- 基于SMDK6410的BSP包结构分析
- BSP的工程文件pbcxml分析
- BSP结构文件分析
- 分析5.0BSP中断
- BSP结构文件分析
- RTEMS 4.9.4 csb337 bsp 的 start.S 分析
- 源码分析vxWorks6.x的ARM板BSP启动过程
- DM365的BSP源码分析-基于2.6.18内核
- 触摸屏驱动程序分析及其在BSP上的添加
- 再次分析5.0BSP中断
- BSP中的CEC文件分析
- OGRE实例分析之BSP
- 2440bsp wince启动分析
- 分析三星5.0BSP中断
- WinCE BSP工程文件分析
- WinCE BSP工程文件分析
- 链队列
- maven+ssm+redis配置demo
- 万万没想到,Collection接口还能这样学
- debug心得(一)
- Linux下彻底删除Mysql
- bsp的分析
- valid parentheses
- Myecplise 10创建struts2流程
- Python Django进阶教程(五)(session,Django用户认证)
- Renovate
- 循环队列
- Struts2搭建登录页面
- Echarts 如何调整 legend 和图表的间距
- jenkins体验-maven安装