创建并移植K10 BSP包的具体步骤和方法(二)

最新更新时间:2013-09-30来源: 互联网关键字:K10  BSP包 手机看文章 扫描二维码
随时随地手机看文章

3. BSP包代码的修改

  在C:\Freescale\Freescale_MQX_4_0\mqx\source\psp\cortex_m文件夹里的psp_cpudef.h文件中可以找到支持Kinetis K10/K20/K30/K40/K50/K60/K70等相关芯片的PSP宏定义,例如支持K10DN512的宏定义为:

  #define PSP_CPU_MK10DN512Z (PSP_CPU_NUM(PSP_CPU_ARCH_ARM_CORTEX_M4, PSP_CPU_GROUP_KINETIS_K1X, 2))

  同时在该文件中还可以找到所有Freescale指定PSP处理器支持包所支持内核的宏定义,如ColdFire,PPC,Cortex-A5,Cortex-A8等。

  在本文中,我们创建的是针对K10DN512的BSP开发包,所以需要用上述的宏定义,将user_config.h文件中的MQX_CPU定义

  #define MQX_CPU PSP_CPU_MK60DN512Z

  修改为:

  #define MQX_CPU PSP_CPU_MK10DN512Z

  此时点击编译按钮会出现错误提示,如下图5所示。

  图5. 头文件错误

  图5. 头文件错误

  出现这个错误是由于在C:\Freescale\Freescale_MQX_4_0\mqx\source\psp\cortex_m\kinetis.h中找不到头文件MK10DZ10.h,需要从以下的IAR安装目录中寻找:

  C:\Program Files\IAR Systems\Embedded Workbench 6.5\arm\inc\Freescale

  然后将该文件拷贝到C:\Freescale\Freescale_MQX_4_0\mqx\source\psp\cortex_m\cpu中进行编译。

  编译仍有错误出现,如下图6所示。

  这个错误主要是由于移植使用的是K60的BSP包,因此里面含有以太网ENET部分和USB部分的代码,而在K10芯片中是没有这些功能模块的,在IAR IDE Workspace工作台环境下,需要将外围I/O驱动(Peripheral IO Drivers)中的ENET和USB等文件夹删除,同时将K10DN512 BSP Files文件夹中的 init_usb.c和init_enet.c文件删除。另外在K10DN512 BSP Files中,由于在MQX安装目录C:\Freescale\Freescale_MQX_4_0\mqx\source\bsp\K10DN512 文件下的init_gpio.c和bsp.h中初始化了ent和usb部分的,需要打开这两个文件,找到_bsp_ent_io_init和bsp_usb_io_init的代码部分,然后直接进行删除。此时再进行编译,则应该没有错误出现了。

  图6以太网及USB相关的文件编译错误

  图6以太网及USB相关的文件编译错误

  下一步需要修改的,是系统的时钟设置。针对K60DN512, MQX默认的外部时钟是50MHz。 对于K20系列MQX默认的外部时钟是8MHz,如果目标板的时钟和默认的外部时钟不一样,则需要重新配置。例如,如果这里选择25MHz的无源晶体作为外接时钟,那么就需要修改bsp_cm.h中的时钟设置,将CPU_XTAL_CLK_HZ的时钟修改为25MHz。当然根据实际项目设计有时也需要配置不同的总线时钟频率,内核时钟频率等,可以参照如下的代码对bsp_cm.h中的宏定义进行相应的修改:

  #define CPU_BUS_CLK_HZ 48000000U /*初始化总线时钟频率为48MHz*/

  修改为

  #define CPU_BUS_CLK_HZ 50000000U /*初始化总线时钟频率为50MHz*/

  #define CPU_CORE_CLK_HZ 96000000U /* 初始化内核、系统时钟频率为96MHz */

  修改为

  #define CPU_CORE_CLK_HZ 100000000U /* 初始化内核、系统时钟频率为100MHz */

  #define CPU_CLOCK_CONFIG_NUMBER 0x03U /* 定义时钟配置的个数,时钟配置有0,1和2,共3种可以选择*/

  #define CPU_BUS_CLK_HZ_CLOCK_CONFIG0 48000000U /*在时钟配置0中的总线时钟频率为48MHz */

  修改为

  #define CPU_BUS_CLK_HZ_CLOCK_CONFIG0 50000000U /*在时钟配置0中的总线时钟频率为50MHz */

  #define CPU_CORE_CLK_HZ_CLOCK_CONFIG0 96000000U /* 在时钟配置0中的内核、系统时钟频率为96MHz*/

  修改为

  #define CPU_CORE_CLK_HZ_CLOCK_CONFIG0 100000000U /* 在时钟配置0中的内核、系统时钟频率为100MHz*/

  #define CPU_XTAL_CLK_HZ 50000000U /* 外部晶体或者振荡器的时钟频率为50MHz*/

  修改为

  #define CPU_XTAL_CLK_HZ 25000000U /* 外部晶体或者振荡器的时钟频率为25MHz*/

  相应的,对于使用的时钟配置0或者1或者2也需要修改,如果目标配置使用的是时钟配置0,可以参照如下代码修改。如果不使用时钟配置1或者2,则不需要做修改。

  /* 在时钟配置0中的CPU时钟频率 */

  #define CPU_CLOCK_CONFIG_0 0x00U /* 时钟配置0的定义 */

  修改内核时钟频率,默认的是96MHz,改为100MHz。

  #define CPU_CORE_CLK_HZ_CONFIG_0 100000000UL /* 内核时钟频率为100MHz*/

  修改总线时钟频率,默认是48MHz,修改为50MHz。

  #define CPU_BUS_CLK_HZ_CONFIG_0 50000000UL /* 总线时钟频率为50MHz*/

  修改Flash时钟频率,默认是24MHz,修改为25MHz。

  #define CPU_FLASH_CLK_HZ_CONFIG_0 25000000UL /* FLASH时钟频率为25MHz*/

  #define CPU_PLL_FLL_CLK_HZ_CONFIG_0 100000000UL /* PLL/FLL时钟频率为100MHz*/

  #define CPU_OSCER_CLK_HZ_CONFIG_0 50000000UL

  /*在时钟配置0中的系统OSC 外部参考时钟 */

  手工书写代码相对繁琐,更方便的方法是使用Freescale的Processor Expert 工具,根据硬件的需要来设置时钟,生成的如下的代码。通过PE工具来对CPU和各种外设进行设置,只需了解它的原理和用法,而不用把精力花在了解寄存器的具体细节上。打开PE后,参照图7的配置进行设置,点击Project-》Generator Processor Expert Code即可生成代码。记住重新修改配置后需要点击Project-》Clean,清掉上次生成的代码,然后再执行生成代码的操作。

  void __pe_initialize_hardware(void)

  {

  _bsp_watchdog_disable();

  /* 关闭 WDOG 模块 */

  WDOG_UNLOCK = WDOG_UNLOCK_WDOGUNLOCK(0xC520);

  WDOG_UNLOCK = WDOG_UNLOCK_WDOGUNLOCK(0xD928);

  WDOG_STCTRLH = WDOG_STCTRLH_STNDBYEN_MASK | WDOG_STCTRLH_WAITEN_MASK | WDOG_STCTRLH_STOPEN_MASK | WDOG_STCTRLH_ALLOWUPDATE_MASK | WDOG_STCTRLH_CLKSRC_MASK;

  /* 系统时钟初始化 */

  /* SIM_SCGC5: PORTA=1 */

  SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK

  SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV2(0x01) | SIM_CLKDIV1_OUTDIV3(0x03) |

  SIM_CLKDIV1_OUTDIV4(0x03); /* 更新系统预分频器 */

  SIM_SOPT1 &= (uint32_t)~(uint32_t)(SIM_SOPT1_OSC32KSEL_MASK);

  PORTA_PCR18 &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07)));

  PORTA_PCR19 &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07)));

  /*切换到FBE 模式*/

  OSC_CR = OSC_CR_ERCLKEN_MASK;

  SIM_SOPT2 &= (uint32_t)~(uint32_t)(SIM_SOPT2_MCGCLKSEL_MASK);

  MCG_C2 = (MCG_C2_RANGE(0x02) | MCG_C2_EREFS_MASK);

  MCG_C1 = (MCG_C1_CLKS(0x02) | MCG_C1_FRDIV(0x05) | MCG_C1_IRCLKEN_MASK);

  MCG_C4 &= (uint8_t)~(uint8_t)((MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS(0x03)));

  MCG_C5 = MCG_C5_PRDIV(0x07);

  MCG_C6 = MCG_C6_VDIV(0x08);

  while((MCG_S & MCG_S_OSCINIT_MASK) == 0x00U) { /*判断晶振是否运行?*/

  }

关键字:K10  BSP包 编辑:神话 引用地址:创建并移植K10 BSP包的具体步骤和方法(二)

上一篇:创建并移植K10 BSP包的具体步骤和方法(一)
下一篇:创建并移植K10 BSP包的具体步骤和方法(三)

推荐阅读最新更新时间:2023-10-12 20:49

曝OPPO K10将全球首发天玑8000:还有LCD高刷屏
早在上个月初,联发科就正式发布了天玑8000系列芯片,其中包括天玑8000和天玑8100两款。   目前,天玑8100已有机型上市,并且获得了非常不错的口碑,性能和功耗方面表现非常均衡,备受好评。   而天玑8000系列却迟迟没有新机搭载,今天终于数码博主@数码闲聊站 带来了首款天玑8000机型的消息,他透露OPPO K10将首发搭载天玑8000。   据悉,OPPO早在天玑8000发布时,就宣布新一代K系列将首批搭载天玑8000。   按照近期多方爆料显示,OPPO K10将会在本月正式发布,预计官方最晚会在下周结束前公布具体时间。   根据爆料,OPPO K10系列存在两款新机,其中OPPO K10将搭载天玑800
[手机便携]
曝OPPO <font color='red'>K10</font>将全球首发天玑8000:还有LCD高刷屏
硬核游戏玩家别错过 OPPO K10系列新机发布1999元起
网易手机讯,2022年4月24日消息,追求游戏体验的玩家一定对OPPO的K系列不陌生,凭借着连续多年打造的K系列爆款新品,在很多硬核手游玩家心中留下了深刻印象。今日,OPPO又于今日举行线上新品发布会,带来性能、快充、游戏等维度全面升级打磨的K10系列新机--OPPO K10/K10 Pro,售价1999元起。 相比于此前的K系列新机,这次OPPO K10系列从设计层面延续最近OPPO新机家族的曲线美学设计,后置镜头模组部分采用三边等距的“火山台地”隆起与后壳实现平滑过渡,配合哑光磨砂工艺质感的后壳,对于不少玩游戏的玩家经常需要横向场景下带来非常不错的握持感。当然,这样的设计也非常具有辨识度,机身配色方面,K10有暗夜黑、冰魄
[手机便携]
联想K10 Note真机可能是Z6青春版
据外媒Pulse91报道,近日,联想新机K10 Note的真机图已经曝光,将采用高通骁龙710处理器,或为联想Z6青春版。 从曝光的图片来看,联想K10 Note采用了水滴屏的设计,“下巴”相比其他三边要略宽一些。在手机的背部,后置三摄位于手机的左上角,这款手机采用了后置指纹传感器。目前大多数智能手机都采用了渐变的背部设计,但是K10 Note采用了传统的单色背面设计。   联想K10 Note将采用高通骁龙710处理器;从手机的内部信息可以看到,联想K10 Note的型号是“联想L3811”。在CPU明确显示了Qualcomm Snapdragon 710 Octa-Core 2.20 GHz。   Pulse9
[手机便携]
OPPO K10系列或于本月发布
随着天玑8000系列芯片的上市,接下来市场上将会迎来一大波搭载该芯片的旗舰手机,其中也包括OPPO。   OPPO在此前联发科发布这款芯片时就已经宣布,OPPO K10系列将会首批搭载天玑8000。   今天上午,知名爆料博主@数码闲聊站 发文透露OPPO K10系列将会在本月正式发布,预计应该会在清明节假期之后宣布。   据此前消息,疑似OPPO K10系列的新机早在上个月初就已经入网,3C认证信息显示该机将支持最高80W快充,这也是目前OPPO旗下最主流的旗舰配置。   据推测,OPPO K10系列将至少存在两款机型,分别是K10和K10 Pro,其中K10将搭载天玑8000,而K10 Pro将升级为性能更强一些
[手机便携]
OPPO <font color='red'>K10</font>系列或于本月发布
OPPO K10系列今天发!天玑8000-MAX、骁龙888全都有
今天下午,OPPO将举行新品发布会,正式推出OPPO K10系列、OPPO智能电视K9x等多款新品。   目前,OPPO K10系列的两款机型——OPPO K10、OPPO K10 Pro已在OPPO官方商城上架,前者将全球首发天玑8000-MAX处理器,后者则将搭载高通骁龙888处理器。   据悉,天玑8000-MAX是OPPO首发定制的一颗旗舰芯片,基于台积电5nm制程工艺,由四颗Cortex A78大核+四颗Cortex A55小核组成,大核主频为2.75GHz(天玑8100的大核主频为2.85GHz)。   官网显示,OPPO K10将配备一块120Hz高刷屏,拥有金刚石VC液冷散热、旗舰级X轴线性马达,4边框曲面
[手机便携]
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved