嵌入式培训

亿元级外企Java培训企业

  • 全国服务监督电话4008270010
嵌入式培训 > 嵌入式教程 > 嵌入式开发流程
  • 嵌入式开发流程

    发布:达内  来源:网络  时间: 2015年07月17日

  • 1.首先,建立交叉编译环境:交叉编译是指:在PC机上编译,在目标板上执行,我PC是linux+ arm-elf-gcc编译器.扳子是ARM3000.板子上的系统是uclinux,这时一个剪裁的很小的实时嵌入式linux操作系统.推荐使用文章内容这个....

  • 1.首先,建立交叉编译环境:交叉编译是指:在PC机上编译,在目标板上执行,我PC是linux+ arm-elf-gcc编译器.扳子是ARM3000.板子上的系统是uclinux,这时一个剪裁的很小的实时嵌入式linux操作系统.推荐使用这个.

    2.然后就是你写程序喽,不过注意可能有些库函数不能用,因为哪个编译器稍微受限一点,不是所由的c库函数都支持,不过一般开发的都有.

    3.连起你的主机和开发板,这个你会不?要连两个:串口(用来控制板子)和以太口(用来下载程序),我们板子上这些外设都有,你要使没有可以用其他的口代替传程序,但串口可是该有的阿!

    4.在你主机上编译程序生成目标代码,建议用makefile文件来组织你的联编关系.

    5.把生成代码下载到目标板执行调试.我是用的主机的NFS(网落文件)服务,下载到目标板的.

    6.注:目标板是怎么控制的呢?是用串口控制的,可用minicom,设置好你要控制的串口,也应该是你连板子的那个.在命令行里敲上minicom,即进入minicom截面,开启你的板子,应该就是板子uclinux系统解压安装的画面了.然后用ifconfig eth0.....

    配置ip,这个ip就是你板子的ip了,注意与主机一个网段.然后mount -t nfs 主机ip:/uclinux /板子上的一个目录,就把主机的 uclinux目录放到板子上了(这么说其实不合理,应该叫挂载). 然后找到你刚才一经编译好的哪个目标代码执行即可.

    1.流程:明确需求->分析硬件软件可行性(速度,内存,算法等)->硬件选型->原理图设计,layout,制板(同时软件功能模块可开始)->

    开发BSP(即所谓的启动程序,各硬件芯片的driver等)->放操作系统上去(如果需要的话)->软件模块加入->测试,,改bug->生产->over。2.首先,小的功能的话,不需要操作系统,一般一个while(1)配合中断完事。

    如果要移植,主要是修改与BSP层相连接的部分(如物理内存映射,启动点衔接等),然后在你的开发环境下编译过就行了。3.移植后,你创建出来进程后,把你要跑的简单任务挂到进程中就行了。

    即:进程主函数设为你的任务函数,这样进程跑起来后就是跑你的任务。4.linux相对庞大,不易掌握,但功能强大;

    ucos短小精悍,但对底层支持度不高。很适合学习时使用。

    基本原理都是一样的。5.心得:经验很重要,动手不动口。细心,勤于学习,多问,很多很多。6.如有其他问题,随时Hi我。

    我的嵌入式linux开发步骤:

    1. 安装虚拟机,见<安装及使用心得>,选择桥接模式

    2. 虚拟机串口设置,见;

    3. 用交叉网线连接PC&开发板.

    4.NFS(PC)设置:见<安装及使用心得>&&< linux开关机脚本相关>

    备注: a.nfs的文件权限设置777

    b.挂载/卸载nfs时候,注意当前所在文件夹,以免不成功

    让PC linux的/etc/rc.d/rc.local里面增加了部分命令,随机启动.如下:

    [root@localhost rc.d]# more rc.local

    #!/bin/sh

    # This script will be executed *after* all the other init scripts.

    # You can put your own initialization stuff in here if you don't

    # want to do the full Sys V style init stuff.

    touch /var/lock/subsys/local

    ifconfig eth0 10.96.15.169

    ifconfig eth0 netmask 255.255.255.0

    /etc/rc.d/init.d/smb start

    /etc/rc.d/init.d/nfs start

    /etc/rc.d/init.d/portmap start

    /etc/rc.d/init.d/iptables stop

    echo "nfs setup OK from /etc/rc.d/rc.local."

    [root@localhost rc.d]#

    4. NFS(开发板)设置:见<安装及使用心得>

    在开发板设置脚本/usr/yangchu.sh,这样开机运行该脚本来自动挂载

    #!/bin/sh

    ifconfig eth0 10.96.15.170

    mount -t nfs 10.96.15.169:/home/myth /mnt -o nolock

    echo “nfs ok!”

    此时由于NFS的缘故,可以在开发板mnt文件里看到实时变化的10.96.15.169:/home/myth文件夹的情况.

    在开发板/etc/init.d/rcS的最后加入了执行上述脚本的语句,开机会自动运行

    这里发现一个问题:发现板子启动时,不会去执行/usr/etc/rc.local文件,而且/etc/init.d/rcS文件包含了/usr/etc/rc.local的所有语句.不晓得这个是不是板子

    的一个bug,所以开发商把后者的语句都让前者去执行完毕了.

    此外一个小发现记录下来:之前用minicom连上板子后,一直是看不到光标的,这给操作带来很大不便,但无意中发现在minicom执行一个非法操作:cat /usr/1.jpg后会自动退出

    minicom.不过重新进入minicom后就可以看到光标了.

    5.在PC上编辑hello.c文件分别见虚拟机myth文件,用autotools生成makefile,并用GDB调试.见&

    6.在PC上安装交叉编译工具,见<交叉编译场景(arm-linux)分析>:

    一般情况下,主机和目标机是同一类型的计算机,这就是正常的编译,没有什么好说的。所谓交叉编译就是在主机上为目标机编译,比如在PC上编译,然后在手机上运行,这种

    编译就叫交叉编译.交叉编译需要交叉编译器,不同的目标机(主要是看芯片类型)需要不同的交叉编译器,比如我们这里要介绍的arm-linux交叉编译,所用的交叉编译器就是arm-linux-gcc系列。

    使用稳定版本cross-2.95.3.tar.bz2来建立交叉编译环境:

    a.将cross-2.95.3.tar.bz2解压到/usr/local/arm,会在该文件夹生成文件夹2.95.3,并删除压缩包cross-2.95.3.tar.bz2

    b.在/etc/profile最后行增加环境变量"export PATH=$PATH:/usr/local/arm/2.95.3/bin"

    7.利用交叉编译工具,在PC上将步骤6生成的hello.c的makefile生成可在开发板运行的hello

    a.修改makefile里的gcc工具

    b../configure --host=arm-linux --prefix=/xxx

    --host:指定目标机的平台类型。一般格式为CPU类型-操作系统名称。比如,目标机的CPU为arm,操作系统为linux,可以这样写--host=arm-linux。

    --prefix:这是安装路径的前缀,即编译结果放置的位置。默认值是/usr或者/usr/local,交叉编译时不能使用默认值,否则它会覆盖你本机的文件,所以要指定一个路径。比如,可以指定为--prefix=/work/cross/rootfs/usr.配置完成后,运行mak e编译,运行make install安装。

    8.做几个里的实验.

    9.内核模块编译:见<内核模块编译>:

  • 上一篇:嵌入式系统开发的一般流程

    下一篇:达内嵌入式课程体系的八大核心

网站导航
2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56