| 51下用bootloader |
打算在51系统上用bootloader。 采用51单片机,4k的程序空间,运行bootloader。片外放置一个串行的flash,如45db041存放程序代码,bootloader运行时将flash中的代码拷贝到片外64k的ram中(从4k开始存放,EA接高电平,执行完片内程序,执行片外程序)。 bootloader执行完后将程序指针指到4K位置。 问题: 1 系统程序中用到的变量(xdata),在ram中会分配到低4k么,编译器怎么处理。 2 中断初始地址有原来的0x0000偏移到了4k区,可否在编译系统程序时设置,还是在片内程序bootloader中加入跳转 请大家讨论一下可行性,给点建议 作者:水淼 2008-1-29 17:27:00 |
|
| 回复1 沙发~~~~~~~~713679 |
1 系统程序中用到的变量(xdata),在ram中会分配到低4k么,编译器怎么处理。 --------------------- 就C51来说,肯定会访问ram的低4K 2 中断初始地址有原来的0x0000偏移到了4k区,可否在编译系统程序时设置,还是在片内程序bootloader中加入跳转 --------------------- 应该不行吧,51的中断入口由硬件定死的,而且又没有MMU或者别的来做地址映射,应该只能加跳转
作者:lelee007 2008-1-29 18:48:00 |
|
| 回复2 中断入口可以想办法,问题是这样做有必要吗?有什么意义?713680 |
中断入口可以想办法,问题是这样做有必要吗?有什么意义?
作者:xwj 2008-1-29 18:54:00 |
|
| 回复3 利用这个可以做个仿真器吧713681 |
在线仿真
作者:lelee007 2008-1-29 18:56:00 |
|
| 回复4 没意义,仿真器不是这么做的713682 |
没意义,仿真器不是这么做的
作者:xwj 2008-1-29 19:14:00 |
|
| 回复5 内存映像编译器(LINKER)可以指定。713683 |
中断向量当然需要使用跳转引导至你的外部存储器某段地址 不像ARM,可以remap
作者:rodger_br 2008-1-29 19:28:00 |
|
| 回复6 嘿嘿,老X713684 |
我的意思了,是说仿真器可以这么做 而不是说仿真器就是这么做的哈 我们公司的4位MCU的仿真器就是MCU+SRAM的结构 不过MCU母体是在FPGA上跑的,结构和最后的CHIP稍有不同
作者:lelee007 2008-1-30 8:51:00 |
|
| 回复7 程序在申请变量时,会不会与自己的程序空间冲突713685 |
程序代码和存放变量的存储区同时在片外存储区,那么程序运行时申请的变量,会不会和自己的程序空间冲突。
作者:水淼 2008-1-30 9:36:00 |
|