嵌入式系统----环境搭建与开发初步

 

嵌入式系统----环境搭建与开发初步

作者:zccst

 

 

昨天几乎浪费了一整天的时间,因为在昨天,除了学习不能集中注意力之外,做其他事情都行。我先是自责,而后开始安慰自己,人都有精神低落的时候,后来竟然觉得人本来都在“自责奋进→自责”的循环中螺旋上升。(注:有点阿Q精神)

 

言归正传,本文主要由以下几个模块组成:

1,  环境搭建

2,  嵌入式开发流程

3,  阿里巴巴

4,  嵌入式开发的三个层次

5,  找到学习方法

 

对于一个新手而言,往往在知道怎么做,同时又知道为什么这么做,会进步很快。本文是我几天之内才完成,其实可以用更短的时间内,看来我还要细细揣摩唐骏提出的快速学习能力。

 

环境搭建

一、认识开发板

1ARM开发板的硬件配置(以S3C2410为例)

CPUSDRAMFLASHLCD(包括键盘LED驱动器,触摸屏)、以太网、USB、串口、调试接口(JTAG)、AD及扩展。

 

2ARM体系结构与编程。

仅仅了解arm开发板的硬件构成显然是不够的,还需要由表及里,了解ARM体系结构与编程。这部分内容有相应文档,中文版有杜春雷编写的《ARM体系结构与编程》。

 

注:SDRAM = Synchronous DRAM,同步动态随机存取存储器

这是一种与CPU实现外频Clock同步的内存模式,一般都采用168Pin的内存模组,工作电压为3.3V 所谓clock同步是将CPURAM通过一个相同的时钟锁在一起,使RAMCPU能够共享一个时钟周期,以相同的速度同步工作,这样可以取消等待周期,减少数据传输的延迟,因此可提升计算机的性能和效率。

 

二、开发板与宿主机直接通信

开发板与主机之间的通信有4种方式:

1.       JTAG

2.       COM。传输协议通常是xmodem/ymodem/zmodem.

3.       网口。TFTP协议。

4.       SD卡口

 

三、宿主机之windows平台

开发环境:ADS1.2+超级终端

ADS1.2:学会使用ADS平台软件,会用AXD进行调试。

超级终端:一般设置波特率115200,数据位8位,停止位1,无奇偶校验,软件硬件流控制设为无。

配置网络:主要是配置NFS,需关闭防火墙,简化嵌入式网络调试环境设置过程。

 

四、宿主机之Linux平台

开发环境:Linux+minicom

Linux:定制或全部安装。下载安装交叉编译器

minicom:初始化,配置, windows下超级终端。

配置网络:主要是配置NFS,需关闭iptables

 

五、文件烧写

包括烧写内核,根文件系统,应用程序等。

内核映像的烧写有两种方式:

1.vivixmodem协议下载,然后烧写

2.linux系统启动后,使用imagewrite工具烧写  imagewrite /dev/mtd/0 zImage:192k

 

 

嵌入式开发流程

环境搭建起来之后,接下来则要进行嵌入式开发了,根据一般开发流程,大致可分为6个过程。

一、建立引导装载程序BOOTLOADER。这是程序正常运行的第一步。

常见的有:U-BOOTBLOBVIVILILOARM-BOOTRED-BOOT等。

这些都公开源码,可以在网上下载,然后根据自己的内核、芯片进行修改,移植。

有些芯片没有bootloader,如SamsungARM9系列芯片,这需自己编写,然后烧写到Flash里。

Windows下可通过JTAG并口烧写。

Linux下用源码公开的J-FLASH。购买厂家,则无法了解其核心技术,但可极大提高开发速度。

 

二、下载操作系统到开发板上。

一般而言,新买的开发板上已经自带烧写好了的Linux操作系统。当然你也可以自己完成,先到网上下载别人已经移植好的,如uclinuxarm-linuxppc-linux

操作系统成功安装之后,就是添加自己特点硬件的驱动程序,进行修改调试。

对于自带MMU的处理器可以使用模块方式调试,对于uclinux则只能通过编译进内核调试。

 

三、建立根文件系统

可到www.busybox.net下载,使用busybox软件进行功能裁剪,产生一个最基本的根文件系统,再根据应用需求添加其他程序。的启本一般都不会用的所以改根统中脚本存放/etc 目录下,包括:/etc/init.d/rc.S/etc/profile/etc/.profile 自动挂装系统文件/etc/fstab体情况会不同。根统在系统中一般设为只读,需要使用 mkcramfsgenromfs 等工具产生烧写映象文件。

 

四、建立应用程序的Flash磁盘分区,一般使用JFFS2YAFFS文件系统。

这需要内核中提供这些文件系统的驱动,有的系统使用非线性FlashNAND型),有的系统使用线性FlashNOR型),有的两者都用。

 

五、开发应用程序。

可放在根文件系统,也可放在JFFS2YAFFS文件系统。也有直接将应用程序和内核设计在一起,比如uc/os-II

 

六、烧写内核、根文件系统,应用程序。

至此,一个完整的嵌入式系统开发流程就完成了。

 

 

关于交叉编译环境及程序调试

一、交叉编译环境

绝大多数的 Linux 软件开发都是本机(HOST)开发、调试, 本机运行的方式。这种方式通常不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机(即板子上系统)运行开发工具和调试工具。通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。交叉编译调试环境建立在宿主机(即一台 PC 机)上,对应的开发板叫做目标板。运行 Linux PC(宿主机)开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行),然后把可执行文件下载到目标机上运行。

 

调试时的方法很多,可以使用串口,以太网口等,具体使用哪种调试方法可以根据目标机处理器所提供的支持作出选择。

 

宿主机和目标板的处理器一般都不相同,宿主机为 INTEL 处理器,而目标板如 UP-NETARM2410 开发板为三星 S3C2410GNU 编译器提供这样的功能,在编译器编译时可以选择开发所需的宿主机和目标机从而建立开发环境。所以在进行嵌入式开发前第一步的工作就是要安装一台装有指定操作系统的 PC 机作宿主开发机,对于嵌入式LINUX,宿主机上的操作系统一般要求为 REDHAT LINUX。嵌入式开发通常要求宿主机配置有网络,支持 NFS(为交叉开发时 mount 所用)。然后要在宿主机上建立交叉编译调试的开发环境。

 

二、程序调试

上面所有的东西看起来很复杂,但大多数嵌入式系统开发者大多数时间辛勤耕耘的根据地其实是软件的开发调试环境。而这部分要求跟PC平台开发者功力相当,遗憾的是,我最薄弱的地方其实就是这里,因为这里的提高非一日之功。在此悼念我的大学时光。

 

 

 

嵌入式开发的三个层次

一、无操作系统

这个层次中,由于没有操作系统,这时的开发板基本类似于单片机,所有的硬件都是有自己用程序控制。需要考虑的问题比较多,适合从事底层嵌入式开发者。适合偏硬的嵌入式软件开发工程师。

 

二、仅有操作系统内核。最典型的是uc/os-II

uc/os基本可以说是一个只有内核的操作系统。但已更为智能。

 

三、有操作系统。又可以分为WinCE和嵌入式Linux

目前,真正做嵌入式软件开发的人员,往往在有操作系统的开发板上编程,这时开发者可以更加全心的关注嵌入式产品实现的功能,而不必过多考虑底层的实现。适合偏软的嵌入式软件开发工程师。

 

上面三个层次的划分是一般意义上的,在实际应用中,用到的最多的有完整操作系统的开发,是下面两种组合方式:

1,  RedHat 9.0 + minicom + armlinux开发环境

2,  Windows XP + 超级终端 + ADS1.2开发环境

 

 

关于找到方法

前面的《人生阶段的划分》一文中曾叙述,我现在正处在技术的第二个阶段,找到方法。书接上文,我学习开发板的方法是:

 

通过同学的建议,我开始看文档资料(艰难),经过自己学习英语的决心,以及身边人的影响和催促,我在最近几天对阅读英文文献及英文原版教材慢慢有了感觉,正如张子阳所言:“当英语的阅读速度和理解能力接近中文之后,你会发现这个世界豁然开朗。”确实如此,我也是在英语的阅读速度和理解能力接近中文之后突然间发现其实学习还有更好的方法,那就是照着开发板自带开发手册开发、调试环境的帮助文档,这两个正是我以前忽视(可能是能力不够的原因)的。总算有种找到根据地的感觉,且等慢慢享受吧!

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值