szszjdb 发表于 2013-7-15 15:42:59

如何移植LPC1788工程到LPC4088,急!!!

本帖最后由 szszjdb 于 2013-7-16 08:59 编辑

朋友们好!
我现在想移植LPC1788工程到LPC4088,原LPC1788工程可正常编译下载仿真,板子为4088。我将KEIL里的器件改为4088, 然后将system_LPC177x_8x.c,startup_LPC177x_8x.s 更换为system_LPC407x_8x_177x_8x.c;startup_LPC407x_8x_177x_8x.s,编译正常通过,下载到开发板时可以正常下载,但是在进入仿真时总是提示不能载入.AXF文件,debugger退出,而此时,只需将器件改回1788,不用重新编译下载,直接点仿真键可正常仿真。已经试过KEIL4.23/4.60,结果相同。可否告知是什么原因?如何改进?

补充一下,因1788例程较多,而4088为M4核,算法较快故想移植LPC1788工程到LPC4088,没想到情况还挺复杂。

fishhead 发表于 2013-7-15 15:52:56

是不是没有生成axf文件,工程-输出 里面看下设置吧。
LPC4088现在能批量拿货了?

Excellence 发表于 2013-7-15 15:53:02

从KEIL的4088例程下拷一个AXF文件,放到你移植的目录下试试。

szszjdb 发表于 2013-7-15 16:05:10

本帖最后由 szszjdb 于 2013-7-15 16:07 编辑

多谢以上朋友回复!
小批量是没问题了。
选4088时,AXF肯定生成了,我查过。如果直接使用4088的工程是没有问题的,可正常仿真。我甚至详细比较过4088与1788的工程文件,除system_LPC177x_8x.c,startup_LPC177x_8x.s 更换为system_LPC407x_8x_177x_8x.c;startup_LPC407x_8x_177x_8x.s,几个头文件换掉,其他没看出什么区别,所以特别郁闷! 继续求解!

多谢!

szszjdb 发表于 2013-7-16 08:56:40

顶一顶,继续求教!多谢!

Excellence 发表于 2013-7-16 09:09:54

别纠结了,找个4088例程,把源代码移植过去。

szszjdb 发表于 2013-7-16 09:30:51

本帖最后由 szszjdb 于 2013-7-16 09:32 编辑

多谢楼上大侠!
这也是最后的解决办法,但对较大的工程比较耗时易错。
有没有大侠知道根本原因在哪呢?有4088板子的朋友能不能也尝试一下,移植1788的工程看有无问题?

nongxiaoming 发表于 2013-7-16 09:41:15

楼主啊,头文件换一下,库函数换一下(如果你是寄存器操作直接无视这个),然后其他东西依旧,在C/C++标签栏里面定义CORE_M4宏,然后就直接完事了啊

szszjdb 发表于 2013-7-16 13:51:12

本帖最后由 szszjdb 于 2013-7-17 00:17 编辑

楼上兄弟,我正是这么做的,可是改后无法加载AXF文件。我将工程贴出来,其中-1788结尾的是原1788工程,功能正常,可加载到4088的PCB上运行,而-4088的为移植后的,无法加载。
还请有硬件环境的朋友帮忙试试!多谢了!
对了,这个工程也是AMO这里一个朋友放出来的,先谢谢他!

szszjdb 发表于 2013-7-16 17:39:00

本帖最后由 szszjdb 于 2013-7-17 00:11 编辑

接着将4088的例子改了,加上UCOS, 这回可以加载AXF文件了,但是UCOS跑起来了后,任务没有运行,停在PENDSV中断了,莫名其妙。原1788的可以正常运行。附件是4088工程,建了两个LED闪烁任务,有没有朋友可以帮忙看看? 多谢!

szszjdb 发表于 2013-7-17 09:58:49

自己再顶顶!

nongxiaoming 发表于 2013-7-17 10:01:57

你用的什么硬件?我这边有个EA的4088

szszjdb 发表于 2013-7-17 10:12:16

论坛上买的,原来是1788的我换成4088.硬件肯定是好的,其他4088例程都能跑,现在问题是用4088能跑的GPIO来加上UCOS,运行时任务没有运行,停在PENDSV中断了,由于对UCOS运行机制和调试方法不熟,不知问题出在何处,您能帮我看看附件的程序吗?

nongxiaoming 发表于 2013-7-17 11:15:38

szszjdb 发表于 2013-7-17 10:12 static/image/common/back.gif
论坛上买的,原来是1788的我换成4088.硬件肯定是好的,其他4088例程都能跑,现在问题是用4088能跑的GPIO来 ...

楼主啊,问题不在于这个芯片啊,在于ucOSII系统啊。你现在是换成了M4的内核,并且打开了FPU功能,对于FPU来说,你打开的话压栈出栈的寄存器是要多18个的,这个是没问题的,只要你的任务栈空间开大一些。关键的原因还是在OS_CPU_PendSVHandler这个函数里面,在任务却换时是要去处理现场的恢复的,但是ucosii里面的OS_CPU_PendSVHandler显然是没有去处理FPU的这几个寄存器,这样问题就出来了。楼主可以参照一下RT-thread的写法啊,RT-Thread是支持FPU的。并且我们也有LPC4088的分支代码哦,很多驱动都写了的。具体请看这里:http://www.rt-thread.org/phpBB3/viewtopic.php?f=31&t=2782

szszjdb 发表于 2013-7-17 15:22:46

多谢小龙解答!
我试着去掉CORE-CM4开关,关闭FPU, 并选择NO FPU, 重新编译GPIO_LedBlinky-LPC4088工程, UCOS任然停止在PENDSV中断,按说现在的4088就相当于1788,怎么还会有问题,或者还要什么改进?
您给的RTT链接我下了,好像还不是一个 工程,还需要工具链配合才能生成MDK工程吗?对这套流程还不清楚。或者有没有已经生成的基础工程参考一下呢?

多谢!

szszjdb 发表于 2013-7-17 15:23:32

多谢小龙解答!
我试着去掉CORE-CM4开关,关闭FPU, 并选择NO FPU, 重新编译GPIO_LedBlinky-LPC4088工程, UCOS任然停止在PENDSV中断,按说现在的4088就相当于1788,怎么还会有问题,或者还要什么改进?
您给的RTT链接我下了,如附件,好像还不是一个工程,还需要工具链配合才能生成MDK工程吗?对这套流程还不清楚。或者有没有已经生成的基础工程参考一下呢?

多谢!

colaring 发表于 2013-7-17 15:34:16

千千万万别用小批量的新芯片,我当年就被STM32F4坑的北都找不到。。。。。。。。。。。。。

当年急着上马F4,就是拿的楼主这种刚出的小批量,结果发现所有芯片会随机的死命发热,只要发
热了拆掉所有外设并且把芯片RESET拉低都没用,搞了几个星期也没搞明白,最后从总代那里搞了
一批新生产日期的芯片,换上测试了很长时间,所有异常全消失了。。。。汗

szszjdb 发表于 2013-7-17 15:45:17

多谢提醒!现在还在学习阶段,还不怕芯片出问题。目前我这片还好,继续观察吧。

nongxiaoming 发表于 2013-7-17 19:58:40

szszjdb 发表于 2013-7-17 15:23 static/image/common/back.gif
多谢小龙解答!
我试着去掉CORE-CM4开关,关闭FPU, 并选择NO FPU, 重新编译GPIO_LedBlinky-LPC4088工程, U ...

是的,需要配置工具去生成工程,我们一般代码不回去直接上传工程的,那样文件太多太大,我们都是把一些固定的,如RT-Thread的源代码等分离然后上传,然后下载后在本地用脚本去集成。这种方法比直接上传工程要省很多。如果你不想去集成的可以联系我给你一个生成好的工程。还有一个问题啊,如果你要关闭FPU的话,那LPC4088就是个1788使了,也就是说一起你的工程直接啥都不改,直接下载就可以直接跑了,没有任何的问题,仿真什么的一样没有问题。我这边测试是这样的。两个的区别主要是一个是M3一个是M4,还有LPC4088多了个SPIFI,这个你估计不去用他的。

nongxiaoming 发表于 2013-7-17 20:41:03

还有啊,楼主你说的你关闭了FPU以后GPIO_LedBlinky-LPC4088还是没法运行,这个是不对的啊,你这个GPIO_LedBlinky-LPC4088的启动汇编根本就没有加入OS_CPU_SysTickHandler和OS_CPU_PendSVHandler两个函数,又怎么会正常运行呢?

SNOOKER 发表于 2013-7-17 20:54:58

4088现在什么价

szszjdb 发表于 2013-7-17 22:20:33

本帖最后由 szszjdb 于 2013-7-17 22:36 编辑

非常感谢小龙,果然一眼看出问题所在,正是启动文件中没有将默认的中断函数换成OS的导致任务无法调度,加上后问题解决。而且我试了,即便开启FPU也可以正常调度,估计是点灯任务没用到FPU哪几个寄存器,看不出影响。小龙能否妙手回春把这个问题一起解决?(我功力不够呀)
先贴上能够跑的LPC4088+UCOS工程。
如方便的话,能否将RTT+4088的工程发给我 13603052469@139.com
RTT大名鼎鼎,很让人佩服的OS, 就是实例不多,RTGUI更新了后,不知道哪里能找到说明文档或者各种控件的实例?
再次感谢!

szszjdb 发表于 2013-7-17 22:30:15

附件没贴上?

ST_ATMEL_NXP 发表于 2013-10-9 12:33:45

多谢楼主,我用楼主的代码跑了两个任务,都有浮点运算,也没出现问题呀!看楼主的任务切换部分也没有对FPU的寄存器进行压栈和出栈操作。奇怪!

szszjdb 发表于 2013-10-10 23:31:02

我也觉得奇怪,没能力深入下去了。

zhangwei00341 发表于 2013-10-17 16:58:15

顶一下,希望楼主早日搞定

nielili 发表于 2014-3-25 16:51:16

学习了,还没有头绪
页: [1]
查看完整版本: 如何移植LPC1788工程到LPC4088,急!!!