BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #3280同步于 2008/12/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

[合集] 【嵌入式学习入门 三】开发过程介绍与心得

lester98
2008/12/20镜像同步2 回复
☆─────────────────────────────────────☆ kanjunbao (回家过年) 于 (Fri Oct 31 21:17:43 2008) 提到: 我对嵌入式系统的理解: 一般情况下其开发过程大同小异。下面结合我们嵌入式交换机网管系统的来说明一下。 (1)建立开发环境,操作系统一般使用Linux,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如,arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的相关交叉编译器。 (2)配置开发主机,配置minicom,一般的参数为波特率115200Baud/s,数据位8位,停止位为1,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样。Minicom软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境的设置过程。 (3)建立引导装载程序bootloader,从网络上下载一些公开源代码的bootloader,如U.boot、blob、vivi、lilo、arm-boot、red-boot等,根据具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如,三星的arv17、arm9系列芯片,这样就需要编写开发板上flash的烧写程序,可以在网上下载相应的烧写程序,也有linux下的公开源代码的J-flash程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常运行的第一步。如果用户购买了厂家的仿真器比较容易烧写flash,虽然无法了解其中的核心技术,但对于需要迅速开发自己的应用的人来说可以极大提高开发速度。 (4)下载已经移植好的linux操作系统,如MCLinux、arm-linux-gcc等,如果有专门针对所使用的cpu移植好的Linux操作系统那是再好不过,下载后再添加特定硬件的驱动程序,然后进行调试修改,对与带MMU的CPU可以使用模块方式调试驱动,而对于Mclinux这样的系统只能编译内核进行调试。 (5)建立根文件系统,可以下载使用busybox软件进行功能裁减,产生一个最基本的根文件系统,在根据自己的应用需要添加其他的程序。由于默认的启动脚本一般不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:/etc/init.d/rc.S、/tec/profile、/etc/.profile等,自动挂装文件系统的配置文件/etc/fatab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs genromfs等工具产生烧写映像文件。 (6)建立应用程序的Flash磁盘分区,一般使用jffs2或yaffs文家系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性flash(nor型)512KB~32MB,有的系统使用非线性flash(nand型)8MB~512MB,有的两个同时使用,需要根据应用规划flash的分区方案。 (7)开发应用程序,可以放入根文件系统中,也可以放入yaffs、jffs2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于uC/OS-II的方式。 我觉得对于linux系统内核方面:大致了解LINUX内核源代码的文件目录的构成(主要就是drivers目录,它是我们最常打交道的驱动的目录)即可。因为我们对于LINUX下驱动的开发最重要的工作学习的方法就是:“搜索+模仿”。因为LINUX是开放源代码的,它的最大的意义就是能免费看世界上最优秀的代码。就像面前摆了一座宝库,就等着我们去寻宝。我们寻宝的手段就是搜索。对于驱动,LINUX开放的代码(drivers目录+google网络)里面提供了无数常见接口芯片的驱动代码或模板(如串口serial.c、framebuffer驱动等),我们首先要知道这些文件在哪个目录下,找到后就是大致读一下,找出与自己实际硬件的差异,以此为基础修修改改即可。而修改时一个重要的手段就是模仿现有的代码。 (以上仅为个人最近在学习嵌入式是的一点心得,水平有限,望大家批评指正。) ☆─────────────────────────────────────☆ sweetfly (mession) 于 (Fri Oct 31 21:58:23 2008) 提到: 顶一个,写的赞~~ ☆─────────────────────────────────────☆ xiachenghai (渊源) 于 (Fri Oct 31 23:41:54 2008) 提到: 顶! ☆─────────────────────────────────────☆ lester98 (奶瓶|单车旋风族之太阳风) 于 (Fri Oct 31 23:44:54 2008) 提到: re !! 【 在 kanjunbao (回家过年) 的大作中提到: 】 : 我对嵌入式系统的理解: : 一般情况下其开发过程大同小异。下面结合我们嵌入式交换机网管系统的来说明一下。 : (1)建立开发环境,操作系统一般使用Linux,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如,arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的相关交叉编译器。 : ................... ☆─────────────────────────────────────☆ doudou02 (豆豆) 于 (Fri Oct 31 23:47:53 2008) 提到: 总结的不错,感觉大家这样把自己的心得写出来,很方便我们这些对嵌入式感兴趣的人学习 赞!!! ☆─────────────────────────────────────☆ xiachenghai (渊源) 于 (Sat Nov 1 00:20:20 2008) 提到: 好帖! ☆─────────────────────────────────────☆ Wyatt (哭着喊着要进步) 于 (Sat Nov 1 00:32:17 2008) 提到: 赞原创~~! ☆─────────────────────────────────────☆ ben1900 (1900) 于 (Sat Nov 1 10:06:24 2008) 提到: 赞原创贴,把这个入门系列争取搞到连载上百篇啊。。。 ☆─────────────────────────────────────☆ sweetfly (mession) 于 (Sat Nov 1 10:56:54 2008) 提到: 必需顶啊~~再接再厉、、、、 ☆─────────────────────────────────────☆ leilongjie (NC追风少年) 于 (Sat Nov 1 14:30:53 2008) 提到: 顶一个。请问楼主是哪个专业的? ☆─────────────────────────────────────☆ hardman (神奇的中华鲟) 于 (Sat Nov 1 19:07:04 2008) 提到: 首页留名~ 赞个先 ☆─────────────────────────────────────☆ kanjunbao (回家过年) 于 (Sun Nov 2 00:46:47 2008) 提到: 谢谢关注这个板块的帖子,我是通信与信息系统专业,自己也是刚开始学嵌入式,很多也是去听别人的经验自己看书,希望以后大家多多交流。。。。 【 在 leilongjie 的大作中提到: 】 : 顶一个。请问楼主是哪个专业的? ☆─────────────────────────────────────☆ ccliu (匆匆过客) 于 (Sun Nov 2 21:40:42 2008) 提到: 热情一顶 ☆─────────────────────────────────────☆ hobby (hobby) 于 (Mon Nov 3 10:22:04 2008) 提到: 嗯 很好 我有个问题想问:关于文件系统,有的用RAMDISK,有的用JFFS,这个有啥差别呢?应用场合有什么不同吗? ☆─────────────────────────────────────☆ kanjunbao (回家过年) 于 (Mon Nov 3 15:27:07 2008) 提到: ramdisk是一个存储设备的驱动,jffs2是一个文件系统,用来组织文件在存储设备的存放方式。我只是大体知道这点,详细资料估计你要查资料,呵呵。 【 在 hobby 的大作中提到: 】 : 嗯 很好 : 我有个问题想问:关于文件系统,有的用RAMDISK,有的用JFFS,这个有啥差别呢?应用场合有什么不同吗?
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
chenlei188机器人#1 · 2009/2/12
写得太好了!~学习了!~~
momenteve机器人#2 · 2009/2/17
感谢,学习中。。