欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    天津理工大学 嵌入式复习.docx

    • 资源ID:5092009       资源大小:714.37KB        全文页数:8页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    天津理工大学 嵌入式复习.docx

    1. 嵌入式、上位机(交叉编译)所谓交叉编译,是指在一个平台上编译生成在另一个平台上运行的可执行程序。之所以 采用交叉编译,这是因为目标平台上不具备直接运行开发环境的条件。2. P35 Linux包含四种文件类型:普通文件、目录文件、符号链接文件、设备文件。3. P38通配符:“"代表任意个字符“? ”代表一个字符“”代表所包括的字符 t123t代表Itl/t2t/t3t4. 系统调用是内核和应用程序之间的接11API是操作系统和应用程序之间的接I I驱动程序是内核和硬件之间的接I I5. 在编译内核时,有两种编译方式:静态编译和动态编译<linux /module.h> <linux/kernel.h> <linux/init.h> <linux/errno.h>挪6. P272最基本内核模块:tincludeinclude linclude lincludestatic int _init init_module (void)/*每个模块必须具有初始化函教7printk(,fTest module initnn);return 0;static void _exit cleanup_modu1e (void) 模块必须具有退出函数/pri4tk (jHello module exitn);moduleinit (init.module); /模块注册函数" module_exit(cleanupmodule);7. Linux文件系统:ext (ext2、ext3、ext4),如果要提供磁盘共享功能,linux提供了一种 VFS文件系统8. 嵌入式操作系统:windows CE、ArmLinux、Embedix、ETLinux、LEM、Linux Router Project.LOAF、uCLinuXx muLinux、ThinLinux、FirePlug RT-Linux、PizzaBoxLinux、VxWorks、Palm OS、pC/OS-ll9. 6410 三星生产32位ARM-11内核2410是ARM910. 在编译过程中,使用交叉编译的arm-linux-gcc11. GDB调试工具添加-g参数12. gcc指定目录输出文件,参数-o路径/文件名gcc分四步:预处理-E生成.i文件,编译为汇编-S生成.s文件,编译为二进制文件-c生 成.。文件,链接-。生成文件(一般无后缀,./文件名直接运行,可以是.。)13. Linux内核映像文件叫zlmage,大的叫bzlmage14. 驱动程序的入II函数不是main,驱动程序中不含main函数15. 嵌入式开发流程:嵌入式开发的基本过程为:采用相应的编辑工具编写应用程序,然后在上位机编译调试 应用程序,然后使用NFS将上位机上编译好的文件下载到下位机上运行。NFS即网络文件系统,是主机通过网络进行文件共享的协议。通常用于Unix和Linux系 统中。NFS服务器的共享目录可以被NFS客户端作为文件系统挂载到本地。NFS通常用 于局域网中的文件共享,其特点是不需要将文件下载到本地即可访问。1. NFS服务的启动关闭#启动rootclient # /etc/init.d/portmap startrootclient # /etc/init.d/nfslock start#关闭rootclient # /etc/init.d/nfslock stoprootclient # /etc/init.d/portmap stop#查看本机已挂载的指定IP地址的NFS目录rootclient #showmount e 192.168.100.2542. 建立、取消挂载点,并挂载测试#一般挂载rootclient # mkdir -p /home/nfs/publirootclient # mount -t nfs 192.168.100.254:/home/public /home/nfs/public#带安全性的挂载rootclient # mount -t nfs -o nosuid,noexec,nodev,rw 192.168.100.254:/home/public /home/nfs/public#查看挂载点详情rootclient #mount | grep addr#取消挂载点rootclient # amount /home/nfs/public3. 特殊挂载方式,应对网络不稳定情况rootclient # mount -t nfs -o nosuid,noexec,nodev,rw -o bg/soft,rsize=32768,wsize=32768 192.168.100.254:/home/public/home/nfs/public4. 开机自动挂载rootclient # vim /etc/rc.d/rc.localmount -t nfs -o nosuid/noexec/nodev,rw/bg,soft/rsize=32768,wsize=32768 192.168.100.254:/home/public/home/nfs/public5. 挂载失败原因分析#客户端的主机名称或IP网段不被允许使用rootclient # mount -t nfs localhost:/home/test /mntmount: localhost:/home/test failed, reason given by server: Permission denied#服务器或客户端某些服务未启动rootclient # mount -t nfs 192.168.100.254:/home/test /mntmount: mount to NFS server '192.168.100.254' failed: System Error: Connection refused.#如果你使用ping服务器都是好的,那么这个问题就是portmap没有开啦!rootclient # mount -t nfs 192.168.100.254:/home/test /home/nfsmount: mount to NFS server '192.168.100.254' failed: RPC Error: Program not registered.#注意看最后而的资料,己经连接上RPC ,但是服务器的RPC告诉,该程序尚未注册服务器端配置1.启动服务rootclient # service portmap start rootclient # service nfs start rootclient # vi /etc/exports /data/www 共享的目录 权限说明 rw 读写 sync 直接同步写入 asyncIP地址(段)(rw,all_squash) 共享权限只读暂存于内存中anongidno_root_squash无用户认证root_squash root用户身份认证 all_squash匿名访问 anonuid2. 重新加载共享配置文件#重新加载rootclient # exportfs -arv#卸载rootclient # exportfs -auv17. c和汇编调用P183内嵌的汇编指令包括大部分的ARM指令和Thumb指令,但是不能直接引用C的变量定 义,数据交换必须通过ATPCS进行。嵌入式汇编在形式上表现为独立定义的函数体。include <stdio<h>extern void strcopy (char *dz char *s) ;int main (). 'char *srcstr = "First string - source11;char dststr = nSecond string - destination11;printf(wBefore copying:n");.printf(n%sn%snMz srcstr,d3tstr);strcopy(dststr,srcstr);printf(MAfter copying:nn);printf ('*%sn%snHz srcstr,dststr);return (0);1 )-代码实例9.11ex4_11.sAREA exll,CODE, READONLYEXPORTstrcopystrcopyqug、, rrLDRBr2, rlz#lSTRBr2r rOJ31CMPr2, #0BNEstrcopyMOVpc,lrEND18 . Makefile13、编写一个打印3000-5000之间素数的程序,将上述程序的源代码分散在两个 文件中,其中一个文件包含main ()函数,另一个文件包含prime ()函数。编写makefile 文件实现对这两个文件的编译。修改其中一个文件后,再进行编译,观察make的输出 信息。假设上述程序的源代码包含两个C语言源文件,a.c和al.c,其中main。函数包含在 a.c中,如下所示。#include <stdio.h>#include<math.h>int prime(int);void main()int a,k;for(a=3000;a<=5000;a+)k = prime(a);if(k=l)printf("d 是素数n”,a);else printf(”d 不是素数n",a);al.c: int prime(int x)int i,j;i = (x-1);for(j = 2; j<= i; j+)if(x%j = 0) break;if(j < i) return 0;else return 1;该工程的makefile文件内容如下。makefile:#指明采用交叉编译器#表示编译后生成的町执行文件名为fact#给出目标文件列表#给出编译参数#给出链接参数#编译主入11CC=armv4l-unknown-linux-gccEXEC=factOBJS=a.o al.oCFLAGS+=LDFLAGS+=-staticall:$(EXEC)$(EXEC):$(OBJS)$(CC) $(LDFLAGS) -o $ $(OBJS) #注意行前空白由一个TAB制表符生成clean:#清除编译结果-rm -f $(EXEC) *.elf *.gdb *.o #注意行前空白由一个TAB制表符生成以上文件准备好以后,执行命令“make”或者“make all",将根据makefile的内容对该 项目进行自动编译,生成可执行文件fact;执行命令“makefact”将运行可执行文件fact: 执行命令“make clean”将删除所有目标文件。19 . Makefile 另一例7、假定在目录/home/arm下有一个C程序,该程序由几个单独的文件组成,而这 几个文件又分别包含了其他文件,如下表所示:文件包含文件main.c stdio.h table.hlist.c list.hsymbol.c symbol.hTable.c table.hTable.hsymbol.hjist.h请完成下列任务:(1)编写Makefile文件,最终的目标文件为hello(交叉编译器为arm-unknown-linux- gcc) 将目标机/home/arm目录通过网络文件系统挂载/mnt到宿主机(其IP为192.168.9.10)的。解答:(1) Makefile文件的编写:最容易理解的写法hello:main.o list.o symbol.o table.oarmv4l-unknown-linux-gcc -o prog main.o list.o symbol.o table.o #彳亍前按 TAB 键 main.o:main.c table.h symbol.h list.harmv4l-unknown-linux-gcc -c -o main.o mian.c #行前按 TAB 键list.o: list.c list.harmv4l-unknown-linux-gcc -c -o list.o list.c # 行前按 TAB 键symbol.o: symboLc symboLharmv4l-unknown-linux-gcc -c -o symbol.o symboLc # 行前按 TAB 键table.o: table.c table.h symbol.h list.harmv4l-unknown-linux-gcc -c -o table.o table.c # 行前按 TAB 键clean:rm hello *.o # 行前按 TAB 键更好(高效)的写法是:CC=armv4l-unknown-linux-gcc# 指明采用交叉编译器EXEC=hello#表示编译后生成的可执行文件名为factOBJS=main.o list.o symbol.o table.o #给出目标文件列表CFLAGS+=#给出编译参数LDFLAGS+=-static#给出链接参数all:$(EXEC)# 编译主入口$(EXEC):$(OBJS)$(CC) $(LDFLAGS) -o $ $(OBJS) #注意行前空白由一个TAB制表符生成clean:#清除编译结果-rm -f $(EXEC) *.elf *.gdb *.o #注意行前空白由一个TAB制表符生成(2) mount -t nfs -o nolock 192.168.0.10:/home/arm /mnt

    注意事项

    本文(天津理工大学 嵌入式复习.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开