cheng166 发表于 2017-11-1 16:37

关于一款芯片的程序移植

RT,楼主目前实验室在做一个项目,要求是针对一款恩智浦的ARM-Cortex M0内核的MCU——LPC11U24的一个例程进行程序移植,移植目标到MSP430FR5959上面,目前已经拿到了这个LPC11U24的全部源码,但对于如何移植并没有任何的概念,自己捣鼓了十来天,一直没有进展,在这里求教一下论坛里的各位大佬,不知可否提供一些指导,方向上的思路或者具体的操作步骤都可以,楼主在此先表示感谢了!

ningling_21 发表于 2017-11-1 16:53

本帖最后由 ningling_21 于 2017-11-1 16:55 编辑

首先要搞清楚原来的程序实现的具体功能
根据这些功能,改写原来的程序,使之能在目标芯片中运行并实现原来的功能

dalarang 发表于 2017-11-1 17:13

移植的话,C语言执行层面的代码一般不用怎么改动,主要是对寄存器的操作重新改一下。
1、新建一个430的工程,然后把原工程内的C和H文件按需要复制过来整理好。
2、修改初始化方面的代码,一般运行时都会先初始化各寄存器,这方面肯定是要改的。
3、修改中断方面相关的代码,这里也是不一样的。
4、执行编译,让编译器列出错误。
5、修改报错的语句,返回4继续。
6、重复执行4/5直到没有编译错误。
7、运行程序,检查运行错误的地方,重复循环修改。

cheng166 发表于 2017-11-1 18:44

dalarang 发表于 2017-11-1 17:13
移植的话,C语言执行层面的代码一般不用怎么改动,主要是对寄存器的操作重新改一下。
1、新建一个430的工程 ...

是这样的,源代码采用的是库开发模式,分了很多层,头文件和驱动函数非常多,我现在要移植到430上面还需要沿用这种库函数的形式吗?

dalarang 发表于 2017-11-1 20:36

cheng166 发表于 2017-11-1 18:44
是这样的,源代码采用的是库开发模式,分了很多层,头文件和驱动函数非常多,我现在要移植到430上面还需 ...

肯定不行啊,只拷贝中间层过来,底层自己重写。

Prry 发表于 2017-11-2 08:54

除了底层相关的代码,上层的直接移过来。所以说代码分层很重要。spi、i2c、uart等,不外就这些,底层和应用分离,移植到任何平台都是很容易的事情。但看过一些工程师写的代码,真的会吐血,能愿重新写过,也不想移。

Prry 发表于 2017-11-2 08:57

比如一个i2c的EEPROM移植过来:i2c总线(底层)->EEPROM驱动->应用;三者中,如果做好分层,只需重新实现i2c总线即可,上面驱动、应用完全不用改。

dog_xin 发表于 2017-11-2 09:23

有的程序移植非常麻烦,因为芯片的资源不同,好多功能用硬件实现的,譬如SPI,I2C等,而换了芯片这个硬件不一样了,得重新改,工作量往往很大,所以我们一般不改芯片,只有做新项目时才考虑用别的芯片。

cheng166 发表于 2017-11-2 15:09

dog_xin 发表于 2017-11-2 09:23
有的程序移植非常麻烦,因为芯片的资源不同,好多功能用硬件实现的,譬如SPI,I2C等,而换了芯片这个硬件不 ...

是的,我要改的这个芯片的代码量非常大,而且又是从ARM移植到430,驱动部分的修改做的欲哭无泪。

zwsam 发表于 2024-3-8 09:09

有意思
页: [1]
查看完整版本: 关于一款芯片的程序移植