查看: 7371|回复: 20

[已解决] 使用PE发现的一点问题(已解决)

[复制链接]

该用户从未签到

23

主题

122

帖子

0

注册会员

Rank: 2

积分
177
最后登录
1970-1-1
发表于 2014-8-4 11:19:25 | 显示全部楼层 |阅读模式
 用PE生成了一个GPIO_LDD项目,转到keil环境下运行。运行到PE_low_level_init函数中的第一条语句
PORTB_PCR5 = (uint32_t)((PORTB_PCR5 & (uint32_t)~(uint32_t)(
                PORT_PCR_ISF_MASK |
                PORT_PCR_MUX(0x04)
               )) | (uint32_t)(
                PORT_PCR_MUX(0x03)
               ));
便出异常了。后咨询飞思卡尔技服,说是因为SIM_SCGC5 [PORTB]位没有置位,应在该语句前加一句SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK。加上之后果然OK了。不过让人疑惑的是PE生成的代码为什么不把后面那条语句自动加上去,这是不是其一个Bug?另外,这PE生成的代码还有其他错误之处,譬如其在Vectors.c文件中定义了一个变量extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit,在keil中就不能编译通过,去掉extern指示字便可以了。依照正统的c语言语法,extern指示字就不能出现在c文件中的,只能出现在h文件中。PE为什么要这么生成?是不是CW中可以是这样的?
我知道答案 目前已有20人回答
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-4 11:57:23 | 显示全部楼层

    回复:使用PE发现的一点问题

    楼主你好
    请问你使用的是哪个版本的PE和Keil?
    我使用PE10.4配置GPIO_LDD生成代码后,在Cpu.c 的__init_hardware里会调用:
    SIM_SCGC5 |= (SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTA_MASK);
    如图:
    PE GPIO_LDD.jpg
     
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23

    主题

    122

    帖子

    0

    注册会员

    Rank: 2

    积分
    177
    最后登录
    1970-1-1
     楼主| 发表于 2014-8-4 14:03:22 | 显示全部楼层

    回复:使用PE发现的一点问题

    回复第 2 楼 于2014-08-04 11:57:23发表:
    楼主你好
    请问你使用的是哪个版本的PE和Keil?
    我使用PE10.4配置GPIO_LDD生成代码后,在Cpu.c 的__init_hardware里会调用:
    SIM_SCGC5 |= (SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTA_MASK);
    如图:

     我用的PE是10.4,keil是5.11a。
    我的这个Cpu.c文件里也有这句话,不过这个__init_hardware不知何故似乎没被调用,或者在PE_low_level_init之前没被调用,所以才出现前述异常。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-4 18:47:42 | 显示全部楼层

    回复:使用PE发现的一点问题

    我使用PE10.4+Keil MDK5.11a调试时能够调用__init_hardware函数呢,而且在main函数PE_low_level_init里操作IO口寄存器时也没有报错,如图:
    PE GPIO_LDD __init_hardware.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-5 08:48:00 | 显示全部楼层

    回复:使用PE发现的一点问题

    关于“另外,这PE生成的代码还有其他错误之处,譬如其在Vectors.c文件中定义了一个变量extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit,在keil中就不能编译通过,去掉extern指示字便可以了。依照正统的c语言语 法,extern指示字就不能出现在c文件中的,只能出现在h文件中。PE为什么要这么生成?是不是CW中可以是这样的?
    可能你的Keil版本较旧所以编译报错,Keil MDK 5.11a正常编译通过的。
    可惜Keil MDK 5.11a暂时小问题不断,你安装起来估计会遇到不少麻烦。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23

    主题

    122

    帖子

    0

    注册会员

    Rank: 2

    积分
    177
    最后登录
    1970-1-1
     楼主| 发表于 2014-8-5 10:18:31 | 显示全部楼层

    回复:使用PE发现的一点问题

    回复第 5 楼 于2014-08-05 08:48:00发表:
    关于“另外,这PE生成的代码还有其他错误之处,譬如其在Vectors.c文件中定义了一个变量extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit,在keil中就不能编译通过,去掉extern指示字便可以了。依照正统的c语言语 法,extern指示字就不能出现在c文件中的,只能出现在h文件中。PE为什么要这么生成?是不是CW中可以是这样的?
    可能你的Keil版本较旧所以编译报错,Keil MDK 5.11a正常编译通过的。
    可惜Keil MDK 5.11a暂时小问题不断,你安装起来估计会遇到不少麻烦。
     
     
    我用的就是keil 5.11a。这个版本确实有些毛病,譬如文件编辑器如果多次打开、关闭就会死机。
    你说5.11a正常编译能通过是怎么回事?是不是设置问题?
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-5 10:30:13 | 显示全部楼层

    回复:使用PE发现的一点问题

    回复第 6 楼 于2014-08-05 10:18:31发表:
    回复第 5 楼 于2014-08-05 08:48:00发表:
    关于“另外,这PE生成的代码还有其他错误之处,譬如其在Vectors.c文件中定义了一个变量extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit,在keil中就不能编译通过,去掉extern指示字便可以了。依照正统的c语言语 法,extern指示字就不能出现在c文件中的,只能出现在h文件中。PE为什么要这么生成?是不是CW中可以是这样的?
    可能你的Keil版本较旧所以编译报错,Keil MDK 5.11a正常编译通过的。
    可惜Keil MDK 5.11a暂时小问题不断,你安装起来估计会遇到不少麻烦。
     
     
    我用的就是keil 5.11a。这个版本确实有些毛病,譬如文件编辑器如果多次打开、关闭就会死机。
    你说5.11a正常编译能通过是怎么回事?是不是设置问题?
     

     

    先安装了Keil MDK 5.11a然后打开旧的工程提示我安装MDK Version 5 - Legacy Support版本的5.11a
    在安装完Legacy版本的5.11a后才有了PE插件“MDKEclipsePlugIn.zip”
    用OpenSDA调试FRDM-KL25Z开发板时又遇到了目标芯片不能选择的问题,在Keil官网找了Freescale Kinetis OSJTAG Drivers V1.20补丁才解决的。
    Keil MDK5.11a实在是问题不断。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-5 10:31:58 | 显示全部楼层

    回复:使用PE发现的一点问题

    回复第 7 楼 于2014-08-05 10:30:13发表:
    回复第 6 楼 于2014-08-05 10:18:31发表:
    回复第 5 楼 于2014-08-05 08:48:00发表:
    关于“另外,这PE生成的代码还有其他错误之处,譬如其在Vectors.c文件中定义了一个变量extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit,在keil中就不能编译通过,去掉extern指示字便可以了。依照正统的c语言语 法,extern指示字就不能出现在c文件中的,只能出现在h文件中。PE为什么要这么生成?是不是CW中可以是这样的?
    可能你的Keil版本较旧所以编译报错,Keil MDK 5.11a正常编译通过的。
    可惜Keil MDK 5.11a暂时小问题不断,你安装起来估计会遇到不少麻烦。
     
     
    我用的就是keil 5.11a。这个版本确实有些毛病,譬如文件编辑器如果多次打开、关闭就会死机。
    你说5.11a正常编译能通过是怎么回事?是不是设置问题?
     

     

    先安装了Keil MDK 5.11a然后打开旧的工程提示我安装MDK Version 5 - Legacy Support版本的5.11a
    在安装完Legacy版本的5.11a后才有了PE插件“MDKEclipsePlugIn.zip”
    用OpenSDA调试FRDM-KL25Z开发板时又遇到了目标芯片不能选择的问题,在Keil官网找了Freescale Kinetis OSJTAG Drivers V1.20补丁才解决的。
    Keil MDK5.11a实在是问题不断。
     

    MDK Version 5 - Legacy Support版本的5.11a是根据Keil提示下载的,如图:
    MDK Version 4 Compatibility.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23

    主题

    122

    帖子

    0

    注册会员

    Rank: 2

    积分
    177
    最后登录
    1970-1-1
     楼主| 发表于 2014-8-5 11:09:17 | 显示全部楼层

    回复:使用PE发现的一点问题

    回复第 7 楼 于2014-08-05 10:30:13发表:
    回复第 6 楼 于2014-08-05 10:18:31发表:
    回复第 5 楼 于2014-08-05 08:48:00发表:
    关于“另外,这PE生成的代码还有其他错误之处,譬如其在Vectors.c文件中定义了一个变量extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit,在keil中就不能编译通过,去掉extern指示字便可以了。依照正统的c语言语 法,extern指示字就不能出现在c文件中的,只能出现在h文件中。PE为什么要这么生成?是不是CW中可以是这样的?
    可能你的Keil版本较旧所以编译报错,Keil MDK 5.11a正常编译通过的。
    可惜Keil MDK 5.11a暂时小问题不断,你安装起来估计会遇到不少麻烦。
     
     
    我用的就是keil 5.11a。这个版本确实有些毛病,譬如文件编辑器如果多次打开、关闭就会死机。
    你说5.11a正常编译能通过是怎么回事?是不是设置问题?
     

     

    先安装了Keil MDK 5.11a然后打开旧的工程提示我安装MDK Version 5 - Legacy Support版本的5.11a
    在安装完Legacy版本的5.11a后才有了PE插件“MDKEclipsePlugIn.zip”
    用OpenSDA调试FRDM-KL25Z开发板时又遇到了目标芯片不能选择的问题,在Keil官网找了Freescale Kinetis OSJTAG Drivers V1.20补丁才解决的。
    Keil MDK5.11a实在是问题不断。
     
     
    这个Legacy版本我也装了,但还是没有“MDKEclipsePlugIn.zip”,不得不在网上另外下载。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-5 13:54:03 | 显示全部楼层

    回复:使用PE发现的一点问题

    回复第 9 楼 于2014-08-05 11:09:17发表:
    回复第 7 楼 于2014-08-05 10:30:13发表:
    回复第 6 楼 于2014-08-05 10:18:31发表:
    回复第 5 楼 于2014-08-05 08:48:00发表:
    关于“另外,这PE生成的代码还有其他错误之处,譬如其在Vectors.c文件中定义了一个变量extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit,在keil中就不能编译通过,去掉extern指示字便可以了。依照正统的c语言语 法,extern指示字就不能出现在c文件中的,只能出现在h文件中。PE为什么要这么生成?是不是CW中可以是这样的?
    可能你的Keil版本较旧所以编译报错,Keil MDK 5.11a正常编译通过的。
    可惜Keil MDK 5.11a暂时小问题不断,你安装起来估计会遇到不少麻烦。
     
     
    我用的就是keil 5.11a。这个版本确实有些毛病,譬如文件编辑器如果多次打开、关闭就会死机。
    你说5.11a正常编译能通过是怎么回事?是不是设置问题?
     

     

    先安装了Keil MDK 5.11a然后打开旧的工程提示我安装MDK Version 5 - Legacy Support版本的5.11a
    在安装完Legacy版本的5.11a后才有了PE插件“MDKEclipsePlugIn.zip”
    用OpenSDA调试FRDM-KL25Z开发板时又遇到了目标芯片不能选择的问题,在Keil官网找了Freescale Kinetis OSJTAG Drivers V1.20补丁才解决的。
    Keil MDK5.11a实在是问题不断。
     
     
    这个Legacy版本我也装了,但还是没有“MDKEclipsePlugIn.zip”,不得不在网上另外下载。
     

     

    这就奇怪了,只要在安装好Legacy版本后,C:\Keil_v5\Eclipse文件夹下应该就会有“MDKEclipsePlugIn.zip”的。
    我在win7 32bit电脑上试了很多次,只安装Keil MDK 5.11a是没有这插件的,必须再安装Legacy版本。
    Legacy.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-22 10:20 , Processed in 0.113235 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表