嵌入式系统开发专题报告_第1页
嵌入式系统开发专题报告_第2页
嵌入式系统开发专题报告_第3页
嵌入式系统开发专题报告_第4页
嵌入式系统开发专题报告_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统开发 专题报告 刘泽建 2006年6月9日,第一章 嵌入式系统开发基础,第一节 嵌入式系统开发所需的硬件基础 1、核心板、扩展板 需要注意的问题:远峰给我们的电源功率只有2A,有时会出现没有显示或显示不正常、内核不能正常启动等问题,这时需要测量电源输入端看输入电压是否是5V左右。 2、普通网线或交叉网线 普通网线用于开发板与集线器之间的连接 交叉网线用于开发板与PC机之间的连接,3、串口线;并口线、Multi-JTAG卡、20针扁平电缆,第二节 BootLoader、kernel和文件系统的下载 1、超级终端参数的设置 开始所有程序附件通讯超级终端 参数设置:每秒位数:115200

2、数据位:8 奇偶校验:无 停止位:1 数据流控制:无 使用端口:COM1,2、vivi烧录到目标板,3、zImage下载 下载vivi后通过超级终端下载内核镜像文件: viviload flash kernel x,4、下载文件系统 在下载内核镜像文件zImage后,下载文件系统:viviload flash root x,至此整个嵌入式Linux系统已经建立,按复位键启动vivi,然后回车,Linux将启动,如下 : 请注意: 对容量 较大的 文件系 统得用 ztelnet 或tftp 来下载,第二章 基于Linux的嵌入式系统开发,第一节 嵌入式Linux开发环境的建立 1、工具链(交叉编

3、译环境)的建立 解压到/usr/local/arm下:tar xvjf cross-2.95.3.tar.bz2 修改PATH变量,在/etc/profile中增加 export PATH=/usr/local/arm/2.95.3/bin 然后重启即可,2、minicom参数设置 rootminicom s进入参数设置:同超级终端的参数设置,注意要是Serial device 为ttys0! 3、ztelnet的安装 安装: #rpm ivh ztelnet-0.9.1-7mz.i386.rpm,4、NFS设置 NFS:允许一个系统在网络上与他人共享目录和文件,通过使用NFS,用户和程序可以

4、像访问本地文件一样访问远端系统上的文件。设置: 关闭防火墙 编辑/etc/exports文件,添加: /home/hello 1(rw,sync) 其中/home/hello为主机共享目录 1为目标板的IP地址 启动NFS:service nfs start,第二节 嵌入式Linux的移植 1、配置和编译vivi #tar -jxvf vivi-20030629.tar.bz2 #cd vivi #make menuconfig 选择Load on Alternate Configuration File调入arch/def-configs/smdk

5、2410 然后选择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-LIBS=/opt/host这一行改为ARM-GCC-LIBS=/usr/loca

6、l/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 dep #make zImage,3、文件系统的生成和移植 #tar jxvf busybox-1.00.tar.gz #make menuconfig #ma

7、ke #make install 之后将在根文件系统建立/usr、/bin、/sbin 等,在这些目录可看到可执行文件和其他应用命令的符号链接,4、启动文件的含义及编写 执行步骤:/etc/init.d/rcS /etc/rc.local /etc/profile 如rcS如下: #!/bin/sh /bin/mount -a exec /etc/rc.local 如rc.local如下: #!/bin/sh ./etc/profile /bin/date 061316302006 /sbin/ifconfig lo up /sbin/inetd /sbin/ifconfi

8、g eth0 1 /sbin/modprobe s3c2410-ts /sbin/modprobe s3c2410-uda1341 /sbin/modprobe s3c2410_gpio_buttons echo static /var/run/pcmcia-scheme . 具体参考我的论文第三章第一节,第三节 嵌入式Linux应用程序开发入门 1、应用程序的编写,如main.c;main.cpp 2、应用程序的编译 #gcc o main main.c #gcc o main main.c lm #arm-linux-gcc main main.c #g+ o mai

9、n main.c #g+ o main main.c lm #arm-linux-g+ main main.c 3、应用程序下载运行 通过NFS mount到目标板或直接放到文件系统下载到开发板上调试运行 ./main,第三节 嵌入式Linux驱动程序开发 1、驱动程序基本概念 Linux系统中,设备驱动程序是操作系统内核的重要组成部分,在与硬件设备之间 建立了标准的抽象接口。通过这个接口,用户可以像处理普通文件一样,对硬件设备进行打开(open)、关闭(close)、读写(read/write)等操作。通过分析和设计设 备驱动程序,可以深入理解Linux系统和进行系统开发,2、一个驱动程序设

10、计实例 #include /同kernel.h,最基本的内核模块头文件 #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 *fi

11、le) /每当应用程序用close关闭设备时,此函数被调用 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)

12、/每当应用程序用ioctl访问设备时,此函数被调用,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() /每当卸载设备驱动程序时,系统自动调用此函数,编写Makefile文件: CC = arm-linux-gcc LD = arm-l

13、inux-ld CFLAGS = -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 -pipe -mapcs-32 -march=armv4 -mtune=arm9tdmi -mshort-load

14、-bytes -msoft-float -DKBUILD_BASENAME=s3c2410_testirq -I/usr/local/arm/2.95.3/include -DMODULE #spi.o: spi.c spi.o:spi.c $(CC) $(CFLAGS) -c $ -o $ #all: spix.o all:spi.o .PHONY: clean clean: -rm -f *.o distclean: make clean rm -f tags,编译以后生成驱动程序模块,然后可在启动是加载或手动加载该驱动: #insmod spi.o/加载 #rmmod spi /卸载,第五节 基于嵌入式Linux的GUI开发,请参考 “基于Linux的QT程序设计专题报告,第三章 基于WinCE.net的嵌入式系统开发,第一节 WinCE.NET内核文件的生成 Windows CE.NET 4.2+Platform Build 4.2,具体WinCE.NET内核文件的生成和下载步骤请参考远峰文档 YF2410

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论