1、嵌入式系统嵌入c程序安阳师范学院计算机与信息工程学院嵌入式系统课程设计实践选题: 嵌入式系统嵌入c程序 专业班级: 指导教师: 姓名学号: 成绩评定: 题目:嵌入式系统嵌入c程序一、问题描述及分析设计裁剪镜像,设计文件镜像系统,文件镜像系统的整套文件目录,内核 zImage 文件的烧写,文件系统的烧写,自己的c程序放入到文件目录中去,我们做的是十进制数字转化成二进制数字。二、课程设计内容1、系统结构与软件设计流 2、任务分工XXX:总体设计,框架设计根文件系统的生成,嵌入式程序的设计。 XXX:引导装载程序(BOOTLOADER)移植,Linux 内核移植与编译。 XXX:资料搜集与整理,文件
2、系统烧写,内核裁剪。3、软件操作说明 VM虚拟机安装,Redfiag系统安装,linux操作环境搭建,开发板系统搭建,内核及文件系统烧写。运行嵌入的c程序。a 建立根文件系统的初始文件建立目录bin、dev、etc、lib、proc、sbin、usr、home、mnt等;cd /devcp -a console null tty tty0 tty1 tty2 ttyS0 ttyS1 /home/longb.移植文件/up-techpxa270/arm-linux-tools/gcc-3.4.6-glibc-2.3.6/arm-linux/arm-linux,因此移植库文件的过程为cd/up-t
3、echpxa270/arm-linux-tools/gcc-3.4.6-glibc-2.3.6/arm-linux/arm-linux/libcp libc.so.6 ld-linux.so.2 /home/long/libc.配置文件。配置文件也可以由busybox生成,因此这一步我们也留待后面再做。1. 安装和使用busybox(1) 解压busybox(2) 配置busybox运行make menuconfig,General Configuration * Use the devpts filesystem for Unix98 PTYsBuild Options * Build Bu
4、syBox as a static binary (no shared libs)* Do you want to build BusyBox with a Cross Compiler?选择交叉编译(/usr/local/arm-linux/bin/arm-linux-) Cross Compiler prefix 回车将路径改为arm-linux-Installation Options Dont use /usrInit Utilities 全都不要Login/Password Management Utilities 全都不要Networking Utilities route(3)
5、安装busyboxmakemake install(4) 移植文件进入busybox根目录,找到_install目录,将其中的bin、usr、sbin目录拷贝至开发板根文件系统,并覆盖其中的同名目录。然后打开目录examples/bootfloppy,将其中的etc目录拷贝至开发板根文件系统,并覆盖其中的同名目录。至此,开发板根文件系统就做好了,由于有了libc.so.6 ld-linux.so.2这两个库文件的支持,我们可以在开发板上运行编译好的C语言程序。cp -a bin usr sbin /home/long cd examples/bootfloppycp -a etc /home/
6、long(5)生成文件系统镜像文件./mkfs.jffs2 -r root -o rootfs.img -e 0x20000 -pad=0xd000004、主要实现方法开发环境:Redflag linux,博创科技 UP-TECHPXA270编译环境: linux虚拟机下运用gcc,交叉编译器arm-linux-gcc。 运行环境描述: 博创科技 UP-TECHPXA270 嵌入式Linux开发板。SecureCRT 5.1。 主要技术要点:在嵌入式开发板上实现十进制到二进制的转换。具体截图实现:Linux预运行程序三、课程设计总结课程设计我们通过自己的实践,对书嵌入式开发知识的实际运用能力和
7、经验得到了提升,进一步加深对知识的理解。并且我们的十进制转二进制中,主要应用了嵌入式系统的搭建中的根文件装载引导程序、内核裁剪和嵌入式linux根文件系统的制作,以及嵌入式控制台程序的编写和调试等知识。让我们对嵌入式系统的开发流程得到了更加清晰地认识。四、存在问题及改进措施在嵌入式系统环境搭建和编写程序的过程中,也出现了很多错误。比如:A.内核连接不上,镜像也连接不上。网络设置有问题。b.根文件系统设计及生成过程中驱动程序包含不完全,导致烧写完成后系统没有反应,硬件驱动补充完整后,正常运行;c.在烧写内核和根文件系统时,由于网络配置问题,IP地址配置不正确,导致tftp传输协议传输超时,最终传
8、输失败,通过禁用其他无关网卡后得到解决。d.根文件系统镜像未按照嵌入式文件格式生成镜像导致无法烧写成功。通过将生成代码的语句补充完整后,解决问题。e.最后,在源程序中由于目标机与宿主机的编码格式不同,导致程序输出汉字为乱码,影响最终效果,将元提示信息改为英文后解决,但仍有部分英文显示还有乱码,这是不足之处。五、源代码#includeint main(void) int i,j,num,test; test=1; test=31; printf(十进制数字转化为二进制数n); printf(请输入数字:n); scanf(%d,&num); printf(所对应的二进制数字为:n); for(i=1;i=32;i+) j=(test&num)? 1:0; printf(%d,j); num=1; if(i%4=0) printf(n); puts(n); printf(MADE BY CIKETIANLONG!); puts(n);long.c 23L, 464C
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1