嵌入式linux开发流程
在嵌入式学习的过程中,嵌入式linux的学习是不可少的,可以说嵌入式linux是学习比较困难的,会遇到各种各样的问题,那么嵌入式linux学习有一个重要的点就是嵌入式linux开发的流程,这是必须要知道的,接下来我们就看看这方面的大牛总结的嵌入式linux开发流程及一些遇到的困难,解决方法。

嵌入式开发流程其实很简单,但是里面是有很多小的东西需要你注意的,这也是我这么多年来的一些经验,先说嵌入式linux开发流程:

一 建立开发环境,首先你必须要会安装配置嵌入式linux开发环境,这个是基本

操作系统当然是LInux,或者在win系统下安装虚拟机,通过网络下载相应的GCC交叉编译器进行安装,或者安装产品厂家提供的交叉编译器。

这一步,就相当于在win系统下,要安装一个IDE开发环境,如MDK,IAR等。在这一点上,我时常会因为这出现一些问题,就因为配置没配好,导致下面的步骤没法进行,报错,要切记这里需要你仔细点。

二 配置开发主机

主要是配置minicom,也就是串口助手,minicom软件是作为调试嵌入式开发板信息输出的监视器和键盘输入工具,是一个非常方便的工具,我们开发其他嵌入式程序时,其实很多时候也采用串口调试,所以最终原理都是相通的。

嵌入式linux开发流程

配置网络,主要是配置NFS网络文件系统,这个主要是用于下载程序,当然不配置也可以,有很多别的办法。

三 建立引导装在程序的bootloader

常用的bootloader主要有u-boot、vivi等,貌似主流的就是u-boot,这个根据自己具体的芯片进行移植修改。有些芯片是没有内置引导加载程序的,这就需要编写开发板上的Flash的少些程序,当然也可以用windows下的通过JTAG并口和仿真器少些Flash芯片程序,也有linux下的公开源代码的J-Flash程序,在自己做的时候,可以预留多重方式,这样是有用的。

简单的讲,其实就是要做好一个属于自己板子的u-boot,完成初始化,内核引导,下载、烧写等。其实在这一点上,也会是个难点,这里需要掌握的东西多,这一流程的烧写,内核引导,网络上有免费下载的Windows下通过JTAG并口简易仿真器烧写ARM外围Flash芯片的烧写程序,也有Linux下的公开源代码的J-Flash程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是系统正常运行的第一步。如果购买了厂家的仿真器当然比较容易烧写Flash,这对于需要迅速开发自己产品的人来说可以极大地提高开发速度,但是其中的核心技术是无法了解的。

再来就是嵌入式Linux操作系统移植了

嵌入式linux开发流程

如果有专门针对你使用的CPU的Linux再好不过,比如uCLinux、ARM-Linux、PPC-Linux等,如果没有,就要尝试移植专属自己的linux了,然后再添加自己特定硬件的驱动程序,进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,而对于uCLinux这样的系统则需要编译进内核,与内核为一体,再进行调试。最好的就是下载别人已经移植好的Linux操作系统来弄,这样会高效

接下来就是根文件系统了

前面的文章讲述过,没有根文件系统的Linux是无法正常工作的,还需要根文件系统。所以需要下载使用busybox软件来实现制作根文件系统。

再根据自己的应用需要来添加其他程序,默认的启动脚本一般都不会符合应用的需求(因为所有的嵌入式开发都是自由定制的),所以就要修改根文件系统中的启动脚本,它的存放位置至于/etc目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自动挂载文件系统的配置文件/etc/fstab,其实就是定制自己要开机启动的程序,具体情况会随着系统的不同而不同,根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs、genromfs等工具产生少些映像文件。记得这一步要看好,别为了省时间写错。

弄好上面那么接下来就简单了就是建立应用程序的Flash磁盘分区

一般会使用jffs2或者YAFF文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用NOR FLASH,有的系统使用NAND FLASH,也有的系统两种flash都使用,到时候就看具体情况了。

开发应用程序

应用程序可以放到根文件系统中,也可以放到yaffs、jffs2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,就是类似于uCOS-II的方式。

其实,上面的那些步骤也就是为了这一步,在这里你要注意他有三种呈现方式:

(1)直接讲应用程序和内核设计在一起,类似与uCOS-II的方式

(2)基于qt等GUI开发应用程序

(3)没有屏幕,只有简单的人机接口,比如串口,按键,数码管,这种也能实现复杂功能开发

现在就是对烧写内核、根文件系统、应用程序的加载了(其实差不多也就完了)

无论怎么加载,模块也好,所有的这些开发,过程资料,都是要烧写到flash中的,然后应用程序需要什么,就加载对应的功能程序即可。

四 发布产品

开发一款中高型的控制器设备,功能比较复杂,甚至需要复杂的屏幕交互,比如手机(安卓是linux的亲儿子,OS是linux的亲表弟),取款机,服务器交易系统,那么linux就非常合适了。

开发一款小型控制器设备,如果功能不太复杂,可以使用稍微高级的CPU,裸机或者ucos等来开发,也很方便,也能做很多定制版的工业小型控制器。

嵌入式linux开发流程差不多就是这样了,在学习时一步一步来,就不会出错,大牛说的这些都学习到了吗,掌握这些方法,嵌入式linux开发流程就不是事儿。

Linux的开发流程相关推荐

  1. linux嵌入式开发流程,听听牛人怎么说

    很多学习嵌入式的人来说,都会学习嵌入式linux开发,在学习的过程中,总会有很多难题,相对而言,嵌入式linux也算是嵌入式学习中比较难的,那如何可以攻破这个难点,那么我们就需要从根本入手,学习嵌入式 ...

  2. 嵌入式linux的开发流程

    嵌入式linux开发流程: 1.搭建前期的开发环境,例如搭建linux主机环境,交叉编译器的安装,还有一些常用的开发辅助软件如source insight等等. 2.学习对硬件的直接操作,这里和单片机 ...

  3. zynq自定义PL IP核linux驱动开发流程

    概述 zynq的开发主要分为两个阶段: 1)硬件逻辑开发阶段:该过程与传统的fpga 软核cpu(microblaze)开发类似,在vivado中进行.需要在BlockDesign中例化zynq硬核c ...

  4. Linux驱动开发流程四步走

    嵌入式ARM 首先,我们要考虑到作为驱动工程师要做的是摆脱单片机开发的思路,在单板开发(没有OS)过程,设备的驱动接口直接交给了上层,驱动和应用互为平等.在有OS的系统中,驱动独立于硬件平台之外,应用 ...

  5. 嵌入式Linux项目开发流程

    使用实时操作系统作为应用程序代码平台的设计还面临着许多挑战,比如如何将功能分配给不同的并行任务.如何设计高可靠的进程间通信.以及如何在硬件上测试整个软件包等问题. 越来越多的OEM厂商发现,避免上述两 ...

  6. 目录 - 《ARM嵌入式Linux系统开发从入门到精通》 - 免费试读 - book.csdn.net

    第一部分 ARM Linux系统移植 第1章 嵌入式系统开发入门...... 2 1.1 嵌入式系统介绍..... 2 1.1.1 嵌入式系统概述..... 2 1.1.2 嵌入式系统组成..... ...

  7. 如何参与linux内核开发

    来源: http://www.cnblogs.com/amaoxiaozhu/p/3340733.html 如果想评论或更新本文的内容,请直接联系原文档的维护者.如果你使用英文 交流有困难的话,也可以 ...

  8. 如何参与linux 内核开发

    如何参与linux 内核开发 原文链接:http://www.cnblogs.com/amaoxiaozhu/p/3340733.html 如果想评论或更新本文的内容,请直接联系原文档的维护者.如果你 ...

  9. 嵌入式驱动开发流程示例(简单的说就是写好驱动,编译,挂载)

    1.在drivers/char/目录下建立一个first_driver_hello.c文件 文件的内容如下 /************************************* NAME:fi ...

  10. Linux下服务器端开发流程及相关工具介绍(C++)

    原文:Linux下服务器端开发流程及相关工具介绍(C++) 去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把 ...

最新文章

  1. 从复旦博士生到985高校副教授,贫穷使人深知摆脱自卑的艰难
  2. R语言ggplot2可视化在ggplot2生成的可视化结果下方显示文本:显示一些关于数据的信息
  3. 机器学习——大数据与MapReduce
  4. 解决安装mysql的”A Windows service with the name MySQL already exists.“问题
  5. Rational Purify 使用及分析实例(转载)
  6. 【Win 10 应用开发】Toast通知激活应用——前台后台
  7. 【数理知识】《随机过程》方兆本老师-第6章-鞅过程及其性质
  8. 如何设置input实现同时选中多个文件并同时上传
  9. 被惊艳到了!适用 Win、Mac、Linux,酷炫的极客界面 eDEX-UI
  10. 16位汇编 int 10h和int 21h 显示字符串实例
  11. mysql 日期间隔_mysql比较两个日期间隔
  12. Qt自定义QML模块
  13. MySQL中实现并、交、差
  14. Python寻找给定序列中相差最小的两个数字
  15. Selenium Grid的搭建方法
  16. AndroidStudio提高编译速度的建议
  17. 安装运行jupyter notebook时报错:ModuleNotFoundError: No module named 'prompt_toolkit.formatted_text'...
  18. LabVIEW中调用Halcon
  19. 计算机房电脑装软件,机房轻松批量安装软件
  20. 技嘉显卡性能测试软件,技嘉RTX 3080 GAMING OC魔鹰显卡评测:全方位压倒前辈的新秀...

热门文章

  1. Gson将json转Map的那些坑
  2. 保存3dmax场景很慢/卡
  3. p5.js 入门教程
  4. Computational Social Science计算社会学-《Science》文章翻译
  5. 考研强化阶段选书怎么选
  6. 谷粒商城学习笔记(一)
  7. 基于矩阵分解的协同过滤推荐算法
  8. 7.1立体环绕追踪音效|专属个性调音台,这副头戴电竞耳机有点料
  9. java读写Txt文件
  10. word文档在线预览解决方案