- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
亚嵌教育内部培训资料__myboot项目框架设计.ppt
* * * * 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * myboot项目框架设计 课程编号:3101北京亚嵌教育研究中心 ?2010 AKAE 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * 学习安排 项目概述 文件结构布局 初始化流程 技术难点 makefile 应用 参考代码 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * Section 1 项目概述 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * 功能需求 开机自启动 启动提示 硬件初始化 软件初始化 Shell支持 串口下载bin Flash烧写 启动自加载 外设测试 LED BEEP DIP SEG7 KEY 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * 程序流程 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * Section 2 文件布局 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * 项目文件布局(参考) 文件 描述 Startup.s 程序入口 / 初始化代码-asm / 设堆栈 / 禁中断 / 跳入C代码 Main.c 初始化代码-C / 延时等待 / 程序主循环 / 命令分派 Libc.c 常用c函数移植(printf, gets, puts, getchar, putchar等) Commands.c 命令实现(help, down, go, nand, etc.) Peripherals.c 外设控制函数库(led,beep,seg7,dip,uart,etc…) Nand.c 闪存读写操作函数 X-modem.c X-modem协议实现函数 Makefile / Readme 工程管理 / 说明文档 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * Section 3 初始化流程 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机C * 初始化流程(asm) 屏蔽中断 LED提示(关闭BEEP) 设置时钟——MCLK/HCLK/PCLK 关闭看门狗 初始化C环境(设置堆栈指针,RW段搬移,ZI段初始化) 跳转至C 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * 初始化流程(C) 初始化UART—开始系统输出 初始化SDRAM – 并自检 初始化NAND – 并自检(*) 用户等待 自动加载 --进入shell循环 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * Section 4 技术难点 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * 技术难点—命令分派 命令分派——函数指针数组 void * commands[cmd_nums][2]; char* str = (char*)commands[0][0]; void (*)(void) cmd = (void (*)(void))commands[0][1]; if(strnicmp(str,”go”,strlen(str)==0)) { cmd();} 参数怎么办? 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * 技术难点—命令分派2 命令分派——switch…case…. 指派命令号 由统一函数处理 int commands(int cmdid, int argc, char * argv[]); 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * 技术难点—变参 实现my_printf( char *format, …) va_list, va_arg, va_end #includestdarg.h 见参考代码 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * 技术难点—flash启动 RO-BASE = 0x0 不想搬移RO和RW段:code_size + rw_size 4K 不想搬移RO段:code_size4K 生成bin烧写 烧写工具 烧写到nand-flash 0x0处 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * 技术难点—flash启动 加载地址和执行地址 |Image$$RO$$Limit| |Image$$RW$$Base| |Image$$ZI$$Base| 北京亚嵌教育研究中心(AKAE) - 专业的嵌入式技术培训机构 * 技术难点—堆栈指针 栈方向取决于硬件和c编译器 可编程确定或通过JTAG观察 其他模式(用到C)都要设置 | 北京亚嵌教育研究中心(
文档评论(0)