keil 下模拟u-boot的cmd功能
2014-01-06 22:07
344 查看
主要实现CMD命令专门分布在一个段内
代码如下:
sct文件如下:
运行效果和map文件
map文件
代码如下:
typedef struct __init_cmd { char *name; /* Command Name */ void (*cmd)(void); }init_cmd_t; #define Struct_Section __attribute__ ((used,section("INIT_CMD"))) #define INIT_CMD(name,cmd) const init_cmd_t __init_cmd_##name Struct_Section = {#name, cmd } INIT_CMD(test1,Test_parm); INIT_CMD(test2,Test_parm2); INIT_CMD(test3,Test_parm2); extern unsigned char Load$$INIT_SECTION$$Base[]; extern unsigned char Load$$INIT_SECTION$$Length[]; void u_printf(char *fmt,...); void Init_all(unsigned long addr,unsigned long len) { init_cmd_t* pCmd; unsigned long i; for(i=0;i<len;) { pCmd = (init_cmd_t*)(addr+i); u_printf("\nadd:0x%x\n",(unsigned long)(pCmd)); pCmd->cmd(); u_printf("name:%s\n",pCmd->name); i+=sizeof(init_cmd_t); } } void Test_parm(void) { u_printf("this is Test_parm!\n"); } void Test_parm2(void) { u_printf("this is Test_parm2!\n"); } int main(void) { int i,RX_status; unsigned long add = (unsigned long)Load$$INIT_SECTION$$Base; unsigned long len = (unsigned long)Load$$INIT_SECTION$$Length; u_printf("add:0x%x ---len:0x%x\n",add,len); Init_all(add,len); u_printf("\ninitover\n"); }
sct文件如下:
; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_IROM1 0x08000000 0x00040000 { ; load region size_region ER_IROM1 0x08000000 0x00040000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } INIT_SECTION +0 { *(INIT_CMD) } RW_IRAM1 0x20000000 0x0000C000 { ; RW data .ANY (+RW +ZI) } }
运行效果和map文件
map文件
相关文章推荐
- java模拟cmd启动springboot
- 模拟实现cmd中的Tracert功能 ,即用于网络检测
- VB模拟出的按键精灵大部分功能
- 在Spring Boot框架下使用WebSocket实现聊天功能
- Springboot+MyBatist实现前后台交互登陆功能
- FLEX实践—Datagrid 高级应用(模拟EBS Folder功能)
- 利用thread来简要模拟signal函数功能
- 个人项目-图书管理系统登陆功能模拟
- C 语言 实现双向链表 模拟ArrayList功能 可追加,插入,移除,得到指定index 的元素值
- 模拟银行全部功能
- SpringBoot启用Druid监控功能
- 利用键盘上的上下左右(回车)键模拟出tab 键的功能上下左右移动焦点
- 移植 u-boot-1.1.6 到 FL2440(1)---实现基本功能
- 2015.07.15-编译stm32-soft在初始化BOOT任务时挂死(KEIL)
- strom-1.1.0模拟单词统计功能,Spout编写,Bolt编写,TopologyDriver编写,本地模式运行,集群模式运行,集群模式下看输出结果
- spring boot极速开发邮件功能
- JavaScript利用构造函数和原型的方式模拟C#类的功能
- 如何在postgresql中模拟oracle的dual表,来测试数据库最基本的连接功能?
- javascript模拟实现C# String.format函数功能代码
- JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例