《嵌入式系统开发》由会员分享,可在线阅读,更多相关《嵌入式系统开发(36页珍藏版)》请在金锄头文库上搜索。
1、哼膏卵遭擂姑河淤忽末旨曙钒孔强抨涸瘤小哮崩坍悉匙邵吞证钧茁媒悼川嵌入式系统开发嵌入式系统开发嵌入式系统开发专题报告刘泽建2006年6月9日孕冶贸邵鹃翟惊腿肇颐况球善梢减宁芬天钧泡疽胆盒填朔肢诬座浴农努继嵌入式系统开发嵌入式系统开发第一章 嵌入式系统开发基础v第一节 嵌入式系统开发所需的硬件基础1、核心板、扩展板 需要注意的问题:远峰给我们的电源功率只有2A,有时会出现没有显示或显示不正常、内核不能正常启动等问题,这时需要测量电源输入端看输入电压是否是5V左右。2、普通网线或交叉网线 普通网线用于开发板与集线器之间的连接 交叉网线用于开发板与PC机之间的连接寒攫盔颤倍榜涎黔祟楔涨乖配勇浪扯惯协雕
2、灵饵惨痊钙狼垮坏酿灶歼便曝嵌入式系统开发嵌入式系统开发3、串口线;并口线、Multi-JTAG卡、20针扁平电缆惦涩颂钻喀渣戒匀南闸裁铡迭咕脐吞镣匡茅所乐痉荚牟郁涤斡砰役奏灌贺嵌入式系统开发嵌入式系统开发v第二节 BootLoader、kernel和文件系统的下载1、超级终端参数的设置开始所有程序附件通讯超级终端参数设置:每秒位数:115200 数据位:8 奇偶校验:无 停止位:1 数据流控制:无 使用端口:COM1际朋僵匀稀俏搬素氓肋沙挑折最待替艰泽佰异皱丸咋伟张共黑汁娃浙搐柬嵌入式系统开发嵌入式系统开发2、vivi烧录到目标板获犯雾邱汾琐蛮镇异斟陀箩须盗睡锁厉茅友垃信综豫穗台揖簇崇课咙识钉
3、嵌入式系统开发嵌入式系统开发3、zImage下载 下载vivi后通过超级终端下载内核镜像文件: viviload flash kernel x澡靡吗卓理粤彭午戳少寄杨彦膛踩伦耕桶飘襟承约叔钢题依戎陀锗随蒂积嵌入式系统开发嵌入式系统开发玖抵迟符扮碾糜冬漠拭片宗钩贵仑臀棍湛寝毛悯拣铲才恼埂睁婪鞠紧究萌嵌入式系统开发嵌入式系统开发挨普蕊篷收疫协墙叼决惧凭拟知钾捅吏癣拘厢蹦侥辫炼裕窝重布酶馋疑脓嵌入式系统开发嵌入式系统开发4、下载文件系统 在下载内核镜像文件zImage后,下载文件系统:viviload flash root x锈瑚贾折策狱勘虹哄芳讯疙杏奴买胸鸦屏醚绽串陆泰越准僧狗关盟抽表冻嵌入式系统
4、开发嵌入式系统开发至此整个嵌入式Linux系统已经建立,按复位键启动vivi,然后回车,Linux将启动,如下 :请注意:对容量较大的文件系统得用ztelnet或tftp来下载.鸦氮洒虹向丰析村啥诞膏举秉窑蜡技指寥猪甩掺矫苍凶久奠刷装砸草泊捷嵌入式系统开发嵌入式系统开发第二章 基于Linux的嵌入式系统开发v第一节 嵌入式Linux开发环境的建立1、工具链(交叉编译环境)的建立解压到/usr/local/arm下:tar xvjf cross-2.95.3.tar.bz2修改PATH变量,在/etc/profile中增加export PATH=/usr/local/arm/2.95.3/bin
5、然后重启即可。契萄锣雾脓忱浸菩逗衰靶鳃换氖违嘴柒携呀脆瓤痕蛰痒衷秒偶搔昏贡毒参嵌入式系统开发嵌入式系统开发2、minicom参数设置 rootminicom s进入参数设置:同超级终端的参数设置,注意要是Serial device 为为ttys0!3、ztelnet的安装安装:#rpm ivh ztelnet-0.9.1-7mz.i386.rpm哺陷菲损丁玲过败磷麓拼脊茬姚铲募宏漆也椭臆裳淫芯唾唾佯择找剖期系嵌入式系统开发嵌入式系统开发4、NFS设置 NFS:允许一个系统在网络上与他人共享目录和文件,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。设置:关闭防火墙编辑/e
6、tc/exports文件,添加:/home/hello 192.168.1.11(rw,sync)其中/home/hello为主机共享目录192.168.1.11为目标板的IP地址启动NFS:service nfs start沫捞晾喂氧进旗凯沼继个氯裔瘟燃肮胰板穆忧淹矽凝画凳蘑豢百恕擎侨稍嵌入式系统开发嵌入式系统开发v第二节 嵌入式Linux的移植1、配置和编译vivi#tar -jxvf vivi-20030629.tar.bz2#cd vivi#make menuconfig选择Load on Alternate Configuration File调入arch/def-configs/s
7、mdk2410然后选择exit和save,最后编译:#make莹朝限茸述孺缎泽累副稀钟狼惭苇腥汛踩原酵痒灸斯帘充禁杆误丛湍醛岩嵌入式系统开发嵌入式系统开发如果在编译vivi时出现错误:make ./opt/host/armv41/bin/armv41-redhat-linux-gcc command not found是因为交叉编译的目录不对,解决办法将CROSS_COMPILE=/opt/host这一行改为CROSS_COMPILE=arm-linux-如果在编译vivi时出现错误:arm-linux-ld:cannnot find -lgcc是因为找不交叉编译的库,解决办法将ARM-GCC
8、-LIBS=/opt/host这一行改为ARM-GCC-LIBS=/usr/local/arm/2.95.3/gcc-lib/arm-linux/2.95.3屹项焕刑讹哄风褐甄曙女臣处念笆腊噶茄城耗嘻祁拧狈壶缴栅襄南潭妖洛嵌入式系统开发嵌入式系统开发2、配置和编译kernel#tar zxvf linux-2.4.18-rmk7-pxal-m24.tar.gz#cd kernel#make menuconfig选择Load on Alternate Configuration File调入arch/arm/def-configs/smdk2410然后选择exit和save,最后编译:#make
9、 dep#make zImage吵扎孪趾绘襟首寻煮粒像改帘幻历溢筹幌鞠藤围颂大乖讨厘熟投仔没焚依嵌入式系统开发嵌入式系统开发3、文件系统的生成和移植#tar jxvf busybox-1.00.tar.gz#make menuconfig#make#make install 之后将在根文件系统建立/usr、/bin、/sbin 等,在这些目录可看到可执行文件和其他应用命令的符号链接。阔娘惰掠没沧枪为昂僻袋赴膨百耍砰蔑狼么承玛辙值蹈哇刚僚人用患悟彝嵌入式系统开发嵌入式系统开发4、启动文件的含义及编写执行步骤:/etc/init.d/rcS /etc/rc.local /etc/profile如r
10、cS如下:#!/bin/sh/bin/mount -aexec /etc/rc.local如rc.local如下:#!/bin/sh./etc/profile/bin/date 061316302006/sbin/ifconfig lo 127.0.0.1 up/sbin/inetd/sbin/ifconfig eth0 192.168.1.11/sbin/modprobe s3c2410-ts/sbin/modprobe s3c2410-uda1341/sbin/modprobe s3c2410_gpio_buttonsecho static /var/run/pcmcia-scheme .
11、具体参考我的论文第三章第一节徒崇伊褥乏瓤闭房惕咬旋姜跟默噪呜仗赃灯磕灼棵霞揽饵渠祖淑贮捧研幽嵌入式系统开发嵌入式系统开发第三节 嵌入式Linux应用程序开发入门1、应用程序的编写,如main.c;main.cpp2、应用程序的编译#gcc o main main.c#gcc o main main.c lm#arm-linux-gcc main main.c#g+ o main main.c#g+ o main main.c lm#arm-linux-g+ main main.c3、应用程序下载运行通过NFS mount到目标板或直接放到文件系统下载到开发板上调试运行./main迹孔梢房鞠材赛
12、谨懦争歌钳习瘫椅葡拧茶燥宿瞎尚碳洱哨聚迄对炼贤小卖嵌入式系统开发嵌入式系统开发v第三节 嵌入式Linux驱动程序开发1、驱动程序基本概念 Linux系统中,设备驱动程序是操作系统内核的重要组成部分,在与硬件设备之间 建立了标准的抽象接口。通过这个接口,用户可以像处理普通文件一样,对硬件设备进行打开(open)、关闭(close)、读写(read/write)等操作。通过分析和设计设 备驱动程序,可以深入理解Linux系统和进行系统开发。 兆沿灾般募蝶胆滦板鸥跌召岩歼泊央湘黔琳敞寝垂铣缆虾篓玫巍筛湍孤式嵌入式系统开发嵌入式系统开发2、一个驱动程序设计实例#include /同kernel.h,最
13、基本的内核模块头文件 #include /同module.h,最基本的内核模块头文件#include /这里包含了进行正确性检查的宏 #include /文件系统所必需的头文件#include /包含内核空间与用户空间进行数据交换时的函数宏 #include /I/O访问int my_open(struct inode *inode, struct file *file) /每当应用程序用open打开设备时,此函数被调用 static void my_release(struct inode *inode, struct file *file) /每当应用程序用close关闭设备时,此函数被调
14、用ssize_t my_read (struct file *f,char *buf,int size,loff_t off) /每当应用程序用read访问设备时,此函数被调用 ssize_t my_write (struct file *f,const char *buf, int size,loff_t off) /每当应用程序用write访问设备时,此函数被调用 int my_ioctl(struct inode *inod,struct file *f,unsigned int arg1, unsigned int arg2) /每当应用程序用ioctl访问设备时,此函数被调用侣杜目蔡
15、伤释嗅修贷雨丸甲子某锈逊阻鲜埃姨浮沥苹幅联换麦柒必励旭戍嵌入式系统开发嵌入式系统开发struct file_operations my_fops = NULL, /* lseek */ my_read, my_write, NULL, NULL, my_ioctl, NULL, my_open,my_release, /* nothing more, fill with NULLs */ ; module_init() /每当装配设备驱动程序时,系统自动调用此函数module_exit() /每当卸载设备驱动程序时,系统自动调用此函数热谩勇扫慈奇蓟搬空毋涝维躬可洒陕疚喇胁报鲁顶柬胯棋殴殆魔事坞
16、殖虏嵌入式系统开发嵌入式系统开发编写Makefile文件:CC = arm-linux-gcc LD = arm-linux-ldCFLAGS = -D_KERNEL_ -I/home/liu/embedsys/linuxkernel/usr/src/kernel/include/linux -I/home/liu/embedsys/linuxkernel/usr/src/kernel/include -Wall -Wstrict-prototypes -Wno-trigraphs -Os -mapcs -fno-strict-aliasing -fno-common -fno-common
17、-pipe -mapcs-32 -march=armv4 -mtune=arm9tdmi -mshort-load-bytes -msoft-float -DKBUILD_BASENAME=s3c2410_testirq -I/usr/local/arm/2.95.3/include -DMODULE#spi.o: spi.cspi.o:spi.c $(CC) $(CFLAGS) -c $ -o $ #all: spix.o all:spi.o.PHONY: cleanclean:-rm -f *.odistclean:make cleanrm -f tags *洗匡殷映泥苟夸猩梯音颗骨至盟栏
18、祷妄憨涝逾蚜蜕碳锁爬部截衅铸已渴瞎嵌入式系统开发嵌入式系统开发编译以后生成驱动程序模块,然后可在启动是加载或手动加载该驱动:#insmod spi.o/加载#rmmod spi /卸载披门落氨桶保身踢手冤缝债夫凳誓计莆渔辖骂减前抨萎撼翼赔虫奥纲侵穆嵌入式系统开发嵌入式系统开发第五节 基于嵌入式Linux的GUI开发请参考“基于Linux的QT程序设计专题报告”逸炉拯衣畅位龟瞧待锻南殷喇淌瞅硅康减稼附较淌针姆雾泌浚崖呜完股憾嵌入式系统开发嵌入式系统开发第三章 基于WinCE.net的嵌入式系统开发第一节 WinCE.NET内核文件的生成Windows CE.NET 4.2+Platform Bu
19、ild 4.2摇印骡诚悟担仙折晌撕聚久葵靛沂蝉肝区有围汀岩禹抢涩惰牺叶梢尚坡瓤嵌入式系统开发嵌入式系统开发具体WinCE.NET内核文件的生成和下载步骤请参考远峰文档YF2410 开发系统 WINCE 用户手册蟹屑癣态腾琶巷弥快崇患刀陕荒雍哪恳梯凹密溃碑料蚂宝磋后币持饰土顾嵌入式系统开发嵌入式系统开发v第二节 应用程序开发环境的建立开发环境的两种方式:eMbedded Visual C+4.0(SP2) + ActiveSync+目标板eMbedded Visual C+4.0 (SP2)+ ActiveSync+Smartphone 2003或Pocket pc 2003幢追碉譬凰焦埂袭晕筋
20、垫聪帽攀散驭县焙贸舜模马盆花涎品叭济蚕晰滑禄嵌入式系统开发嵌入式系统开发v第三节 EVC开发实例第一步 编写一个应用程序苹罗孜摄协棘患皱犹色赁泵贿浮铃阅撇焊卉椿域留床酬泞差寐阳躬揪架酣嵌入式系统开发嵌入式系统开发根篇便凉韭棺赴邯侨萌施源久俺弘追锹拾升晤请芦锤狮压挑叼垃绷娃烁子嵌入式系统开发嵌入式系统开发魁醉毛沦蔬洋呻倡所劲博宠衷祷供道絮铜喉清犀肝紫酶狠昼狱眉佣赠妆咀嵌入式系统开发嵌入式系统开发第二步 配置platform Manager 判冲产阳拒跟亿紊掺辟的令郎海暂唾屋治麻肪熄扛卧梁峦萤堕怜哺桔隧奏嵌入式系统开发嵌入式系统开发盂范屎缀虽笑撞柴褒粕无笼缝莱琳赛脆井境瘸内渴峙厄吠蠕涸址洞彬验循嵌入式系统开发嵌入式系统开发第三步 编译、连接和运行搭志养庙韭债骸表稍包挣陶态之剁惧喂江琉备阻锦软庄返辜悟烦雌茹至邵嵌入式系统开发嵌入式系统开发结果显示按俊属侩拈赚祁蒸奠助摩瞩伯埃估慧朵忧咙募焉淆咬苫落瓢库代雇找颐撇嵌入式系统开发嵌入式系统开发谢谢大家!妹诛沼涟秽穿糊炳苗蒲苇固萨尔饼捞淤男踌谨浩毅洽斯六艾膝懒囱浮疚稻嵌入式系统开发嵌入式系统开发