2752|1

2144

帖子

3

TA的资源

五彩晶圆(中级)

楼主
 

【MSP430 编译器使用经验】+将程序拷贝到RAM中执行 [复制链接]

1、首先使用IDE为IAR,当然这个说是编译器不太合适,针对IDE而言会合理些吧,暂且这么叫吧。
2、请先自行了解__low_level_init()函数,默认使用该文件的路径是X:\Program Files\IAR Systems\Embedded Workbench 6.0 Evaluation\430\src\lib\low_level_init.c 。
3、针对我们的应用,先拷贝出一份low_level_init.c放置到工程目录下面。
4、接下来我们添加一个汇编文件命名为Flash2RAM.asm或者.r43也可以的吧,我使用.asm后缀。
5、汇编代码如下:
PUBLIC FLASH_2_RAM

RSEG        CODE  

FLASH_2_RAM
PUSH.W      R8
PUSH.W      R9
PUSH.W      R10
MOV         #20H,R10
MOV         #5C16H,R8
MOV         #3C00H,R9
LOOP MOV    @R8+,0(R9)
INCD        R9
DEC         R10
JNZ         LOOP
POP.W       R10  
POP.W       R9
POP.W       R8
RET

END
6、修改low_level_init.c文件如下:


extern void FLASH_2_RAM(void);

int __low_level_init(void)
{
    WDTCTL = WDTPW | WDTHOLD;
    FLASH_2_RAM();
    asm("mov #3C00h,R0");
    return 1;
}

此处在cStart之前把Flash中的程序拷贝到RAM中,注意针对的MCU型号为MSP430F5438,其他的型号修改相关的FLASH和RAM首地址即可。
注意这里在拷贝结束后把指针强制指向RAM中即可。

7、实测程序,非转载欢迎大家测试。

8、针对一款MCU而言,如果你选择某款IDE作为开发环境,建议要搞清楚一些基本的知识点,启动过程,cstart过程都做了哪些事情,linker的细节问题。如果你用开源的编译器来建立一个工程的话,相信你会了解其中的种种,MSP430有开源的gcc编译器哦,大家可以玩玩。
 
点赞 关注
个人签名电工

回复
举报

2144

帖子

3

TA的资源

五彩晶圆(中级)

沙发
 
添加软件仿真图片
STEP1:



STEP2:



STEP3:



STEP4:



你可以在你的MAIN中写一个闪灯程序或者其他的程序,直接看效果,如果软仿的话可以写一个排序的程序,看结果是否完成。


 
个人签名电工
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表