版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统开发技术课程设计(实习)报告信息工程学院编制任务项目2 按键中断控制串口31. 目的32. 内容33. 要求3任务项目3 PWM控制蜂鸣器以及通过串口控制其频率61. 目的62. 内容63. 要求6任务项目4看门狗定时器编程91. 目的92. 内容93. 要求9任务项目5 u-boot源码详细分析121. 目的122. 内容123. 要求124. 附录125.代码注释15心得体会18任务项目2 按键中断控制串口1. 目的(1)熟悉裸机按键中断的发生及通过串口输出字符过程。2. 内容独立编写程序实现:(1) 当按下按键SW7时发生中断,设计中断服务函数使得蜂鸣器鸣响同时串口输出SW7。
2、(2) 当按下按键SW8时发生中断,设计中断服务函数使得蜂鸣器结束鸣响同时串口输出SW8;3. 要求请将实验过程截图黏贴到下面的空白处。任务项目3 PWM控制蜂鸣器以及通过串口控制其频率1. 目的(1)熟悉裸机下PWM定时器、串口程序的编写。2. 内容 (1)参照课本程序调试运行使得PWM定时器能控制蜂鸣器;(2)加入串口程序使得当在串口输入“A”和“B”时蜂鸣器能以不同的频率鸣响。提示:可参看教材中断这一章编写程序。3. 要求请将实验过程截图黏贴到下面的空白处。任务项目4看门狗定时器编程1. 目的(1)熟悉裸机下看门狗定时器程序的编写、测试及运行。2. 内容 (1)参看课本程序,调试运行,实
3、现通过定时器精确控制蜂鸣器延时1秒钟; (2)控制蜂鸣器鸣响使之模仿简单歌曲读书郎。提示:参看系统时钟和定时器这一章编写程序。3. 要求请将实验过程截图黏贴到下面的空白处。任务项目5 u-boot源码详细分析1. 目的(1)熟悉u-boot工程的总体结构。(2)熟悉u-boot的流程、主要的数据结构、内存分配。(3)熟悉u-boot的重要细节,主要分析流程中各函数的功能。2. 内容 S5PV210 u-boot源码分析 3. 要求请添加u-boot源码注释,查看相关数据手册,添加代码注释,以实验台为基数,每组完成i部分的50行代码。注释添加示例:Start.S中一段程序:.globl _sta
4、rt_start: b reset / b是跳转指令,即跳转到reset标签处。接着返回到此处。 ldr pc, _undefined_instruction /设置中断向量表 0x0 0x4.0x8 0xc ldr pc, _so
5、ftware_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc,
6、_fiq4. 附录1. u-boot启动流程1.1 启动阶段分为3个,bl0,bl1,bl2。下面只是就功能方面对它们做说明,实际设计的时候,也许会对其具体功能做出调整,也就是说,这几个阶段的划分是就功能而言的,不能看得太死。 bl0:出厂的时候就固化在irom中一段代码,主要负责拷贝8kb的bl1到s5pv210的一个96kb大小内部sram(Internal SRAM)中运行。值得注意的是s5pv210的Internal SRAM支持的bl1的大小可以达到16kb,容量的扩增是为了适应bootloder变得越来复杂而做的。虽然如此,但目前我们制作出来
7、的bl1的大小仍然可以保持在8kb以内,同样能满足需求。 bl1:u-boot的前8kb代码(s5pv210也支持16kb大小,原因上一点提过了),除了初始化系统时钟和一些基本的硬件外,主要负责完成代码 的搬运工作(我设计成搬运bl1+bl2,而不仅仅是bl2),也就是将完整的u-boot代码(bl1+bl2)从nand flash或者mmcSD等的存储器中读取到内存中,然后跳转到内存中运行u-boot。 bl2:完成全面的硬件初始化和加载OS到内存中,接着运行OS。上述几个阶段的流程描述在s5pv210_irom
8、_application手册中有详细描述。见下图1:图11.2 首先把启动部分的代码分为3部分,以start.S为主,另外还有lowlevel_init.S,mem_setup.S,ctr0.S。 其中lowlevel_init.S主要是一部分硬件的初始化,尤其是系统时钟和DRAM的初始化。如果u-boot一旦被搬运到内存中运行,那么是必须要跳过时钟和DRAM的初始化的,因为这在搬运之前已经做过了。并且如果代码在内存中运行的时侯你却去初始化DRAM,那必然导致崩溃! mem_setup.S:DRAM初始化代
9、码和MMU相关代码放在这个文件中。 ctr0.S:u-boot自带的代码文件,存放汇编函数main。1.3 启动代码相关的几个文件在u-boot中的路径 start.S: /arch/arm/cpu/armv7/start.S (需要自己修改) lowlevel_init.S:/board/samsung/zsy210/ lowlevel_init.S (需要自己修改)
10、 mem_setup.S: /board/samsung/zsy210/ mem_setup.S (u-boot没有,需要自己添加) ctr0.S: /arch/arm/lib/ctr0.S (u-boot自带,一般不需要修改)2. 启动过程原理 必 须要明白的一点是,当代码从存储介质(nand flash,SD,norflash,onenand等
11、)中搬运到了DRAM中后随即会跳转到内存中运行u-boot,接着会有一个重定位 (relocate_code)的过程,relocate_code子函数在start.S中,而给relocate_code子函数传参数的是 crt0.S中的main子函数。当判断到当前u-boot在内存的低地址处,那么relocate_code就会工作,把u-boot代码从低地址处再 搬运到内存地址的顶端,然后跳转到新的位置去继续运行u-boot。而搬运的目标地址是在board_init_f()函数(此函数在/arch/arm/lib/board.c中)中计算出来的,见图2。
12、 图2
13、0; 下面,以start.S为主线,画出了其程序流程图,图中同样也表现出启动的整个流程和启动代码文件间的组织关系。所以后面直接贴出start.S的完整代码,大家结合流程图相信都可以看明白,至于逐句汇编的分析不是本文的重点。见图3.图35.代码注释relocate_done:/ 搬迁完成1. bxlr /即跳转到lr中存放的地址处。2. _rel_dyn_start_ofs:/* r2 <- rel dyn start ofs */ /r2=0x64854(反汇编) 3. .
14、word _rel_dyn_start - _start /* r2 <- rel dyn start ofs */ /r2=0x64854(反汇编) 4. _rel_dyn_end_ofs: /* r3 <- rel dyn end ofs */ /r3=0x6d104(反汇编) 5. .word _rel_dyn_end - _start6. _dynsym
15、_start_ofs:/* r10 <- sym table ofs */ /r10=0x6d104(反汇编)7. .word _dynsym_start - _start8. ENDPROC(relocate_code)9. #endif/预编译10. ENTRY(c_runtime_cpu_setup)/进入CPu启动11. /*12. * If I-cache is enabled invalidate it13. */14. #ifndef CONFIG_SYS_ICACHE_OFF /结束预编译mcrp15,
16、 0, r0, c7, c5, 0 invalidate icache/ARM的协处理命令mcr p15, 0, r0, c7, c10, 4 DSB/ARM的协处理命令mcr p15, 0, r0, c7, c5, 4 ISB/ARM的协处理命令15. #endif/预编译16. /*17. * Move vector table/移动向量表18. */19. #if !defined(CONFIG_TEGRA20)/结束预编译20. /* Set vector address in CP15 VBAR register */21. ldr r0, =_start/从内存中读出22. add
17、 r0, r0, r9 /三项相加23. mcr p15, 0, r0, c12, c0, 0 Set VBAR/协处理24. #endif /* !Tegra20 */结束预编译25. bxlr/跳转到lr26. ENDPROC(c_runtime_cpu_setup)/cpu开始27. /*28. *29. * void save_boot_params(u32 r0, u32 r1, u32 r2, u32 r3)/无效启动参数保存30. *_attribute_(weak);31. *32. * Stack pointer is not yet initialized at this moment/堆栈指针尚未初始化33. * Don't save anything to stack even if compiled with -O0/不保存任何堆栈即使编译34. *35. */36
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年新教材译林版九年级上册英语Unit 4 Life is beautiful单元知识清单
- 广西南宁市兴园路初级中学2026 年春季学期学科素质调研(4 月份)八年级 英语试卷(文字版含答案)
- 2026年综合实践综合高中教师招聘考试笔试试题(含答案)
- 2026年自然资源公共基础知识事业单位招聘考试笔试试题(含答案)
- 2026年烟草仓储半年度盘点外勤台账专员烟草公司招聘考试笔试试题(含答案)
- 2026 年一氧化碳中毒高压氧综合护理个案分享
- 2026年秋季开学第一课:诚信考试与学术规范
- 夜市特色食材供应商合作协议
- 房地产销售代理合同范本三篇
- 2026年秋季初中开学第一课 青春期健康教育课件
- CHS-GWPF2026:欧盟碳边境调节机制CBAM研究报告市场化路径还是市场失灵-中文译版-
- 2026年美妆个护行业洞察数据报告
- 安徽芜湖2026年无为市泉塘镇村级后备干部招聘考试试卷-含答案解析
- 2026年安徽省产品质量监督检验研究院见习人员招募备考题库及答案详解(历年真题)
- 康复专业面试题库和答案
- 2026中盐东兴盐化股份有限公司招聘17人笔试历年参考题库附带答案详解
- 医院综合运营提升方案
- 铁路物流中心设计规范(Q∕CR 9133-2016)
- 【《某轮腿复合式跳跃机器人的各参数计算及校核过程案例》10000字】
- 2025四川乐山市峨眉山发展(控股)有限责任公司招聘17人笔试参考题库附带答案详解
- 丝域养发培训
评论
0/150
提交评论