搜索
bottom↓
回复: 12

TKM32F499存储器分配问题

[复制链接]

出0入0汤圆

发表于 2021-3-2 10:57:21 | 显示全部楼层 |阅读模式
关注这个芯片很久了,一直没有出IAR+Jlink的调试例程,无法等了,决定自己做个jlink的调试。
以下问题需要版主解答哦,资料实在是太少了:
1>TKM32F499的SDRAM的空间是多少?
2>编译时放在Qspi flash中的程序链接地址是否为:0x70020000开始的2MB的空间,
3>芯片复位后,是否可以通过SWD直接操作SDRAM的区间,这个最重要了;如果不可以直接操作,是否可以提供需要访问哪些寄存器使能SDRAM。

解释下为啥需要以上信息,Jlink支持OFL插件的方式,增加其所不支持的芯片,其传输方式为:下载一段程序到SRAM中,然后执行此程序接受Jlink的数据;通过此方式可以时jilink支持任何调试器。
关于编译,这个比较简单,直接选择相应的内核就可以了,无非就是link时地址不一样而已。

出140入158汤圆

发表于 2021-3-2 12:49:14 | 显示全部楼层
这是个好芯片,性能强大,设计人性化,就两点需要加强一下:一是资料开放程度和细节,二是EMC性能。

出0入143汤圆

发表于 2021-3-2 12:56:42 | 显示全部楼层
1>TKM32F499的SDRAM的空间是:0x70000000~0x707FFFFF,总共8MB
2>编译时放在Qspi flash中的程序链接地址是:0x70020000开始的2MB的空间(目前APP应用程序是这个区间,bootloader是0x70008000~0x70008000+0xF000)芯片内部还有一个ROM,这个ROM在启动的时候要占用一点SDRAM来做运行内存(从0x70000000起,共0x8000),ROM集成了USB下载功能及串口下载功能(串口太慢了,不开放出来)
3>芯片复位后,不可以直接通过SWD直接操作SDRAM的区间,建议你等ROM初始化完了,再捕获指针。例如,你等程序跳到0x70020000再执行仿真就行。

注意:仿真的时候是可以跳过Bootloader的,也就是说没有Bootloader也可以仿真,因为ROM已经把MCU完全初始化了,你可以直接跳到APP就执行仿真。Bootloader中有初始化一个AI_Responder,这个东西你如果跳过了Bootloader,那应该加入到APP程序中使能,这个Responder集成了Cache,没有这个会慢很多。AI_Responder使能函数在sys.c文件里,每个工程里面都有的。

出0入0汤圆

 楼主| 发表于 2021-3-2 16:10:33 | 显示全部楼层
tiky 发表于 2021-3-2 12:56
1>TKM32F499的SDRAM的空间是:0x70000000~0x707FFFFF,总共8MB
2>编译时放在Qspi flash中的程序链接地址是: ...

按照这个解释,那就是芯片里面还有一块SRAM了,这一块是否可以开放?
Jlnk的OFL插件复位后,直接是使用SWD内部RAM,把程序下载到内部RAM中,然后在RAM中执行程序,接收Jlink特定是数据,完成下载功能

出590入992汤圆

发表于 2021-3-2 16:50:49 来自手机 | 显示全部楼层
tiky 发表于 2021-3-2 12:56
1>TKM32F499的SDRAM的空间是:0x70000000~0x707FFFFF,总共8MB
2>编译时放在Qspi flash中的程序链接地址是: ...

我也有两个问题:
1:在TK499开发板中,USB接口没有看到1.5K的上拉电阻,同时在手册中,寄存器没有找到关于1.5K上拉电阻的表述。这个上拉电阻是怎么处理的?
2:在手册中:有一处地方说:APB1和APB2最大时钟都是120MHZ,但是在详细寄存器中又说,APB1最大时钟120Mhz,APB2最大时钟60MHZ,到底应该相信哪一个?

出0入143汤圆

发表于 2021-3-3 10:29:05 | 显示全部楼层
kangqiaoren_12 发表于 2021-3-2 16:10
按照这个解释,那就是芯片里面还有一块SRAM了,这一块是否可以开放?
Jlnk的OFL插件复位后,直接是使用SW ...

不是不想开放,而是这块SRAM拿来做其它用途了

出0入143汤圆

发表于 2021-3-3 10:30:08 | 显示全部楼层
SUPER_CRJ 发表于 2021-3-2 16:50
我也有两个问题:
1:在TK499开发板中,USB接口没有看到1.5K的上拉电阻,同时在手册中,寄存器没有找到关 ...

1、已经内置了1.5K的电阻,你看我们的所有参考板板都没这个电阻的
2、APB1和APB2最大时钟都是120MHZ

出0入0汤圆

 楼主| 发表于 2021-3-3 12:30:55 | 显示全部楼层
tiky 发表于 2021-3-3 10:29
不是不想开放,而是这块SRAM拿来做其它用途了



这个只需要地址信息,放一段程序,在下载的时候使用一下下而已。
下载时,同时告知如何使能sdram, qspi就可以了。下载过程中只能运行OFL插件程序,要不然jlink很难驱动起来。

出590入992汤圆

发表于 2021-3-3 13:09:00 | 显示全部楼层
tiky 发表于 2021-3-3 10:30
1、已经内置了1.5K的电阻,你看我们的所有参考板板都没这个电阻的
2、APB1和APB2最大时钟都是120MHZ ...

好的,但是参考手册上在USB章节没有标注1.5是怎么启用的?或者说:一直启用1.5K电阻吗?就是关闭不了1.5K?

出0入143汤圆

发表于 2021-3-3 13:28:22 | 显示全部楼层
kangqiaoren_12 发表于 2021-3-3 12:30
这个只需要地址信息,放一段程序,在下载的时候使用一下下而已。
下载时,同时告知如何使能sdram, qspi ...

SDRAM的初始化参考函数如下,SRAM工程师建议你把中断向量压缩到512字节,从0x20000000+512开始写入你的函数,代码尽量小,你自己测试保证你的函数在JLINK的驱动下能否正常就行。QSPI在评估板的资料包里有两种库函数,一种用DMA的,一种是用寄存器的,并有参考例程,你看方便用哪种方式使能都行。

  1. void SDRAMinit(void)
  2. {

  3.     *((volatile unsigned int*)(0xd0000014)) = 0x70000000; //select memory base address

  4.     *((volatile unsigned int*)(0xd0000084)) = 0x00000000;  //not remap register

  5.     *((volatile unsigned int*)(0xd0000004)) &= ~((0x01<<26) | (0x03));
  6.     *((volatile unsigned int*)(0xd0000004)) |= 0x02;

  7.     *((volatile unsigned int*)(0xd0000000)) &= (~( (0x01<<14)|(0x01<<12)|(0x01<<7) |(0x01<<5)|(0x01<<4)));

  8.     *((volatile unsigned int*)(0xd0000000)) |= ( (0x01<<13)|(0x01<<11)|(0x01<<10)|(0x07<<9)|(0x01<<8)|(0x01<<6)|(0x01<<3) ); //configuer addr_width and  data_width

  9.     *((volatile unsigned int*)(0xd0000054)) &= (~( (0x01<<7)|(0x01<<6)|(0x01<<5)|(0x01<<4)|(0x01<<2)|(0x01<<1)|(0x01<<0) ));
  10.     *((volatile unsigned int*)(0xd0000054)) |= ( (0x01<<3) );  //memory size

  11.     *((volatile unsigned int*)(0xd00000ac)) = 0x32;         //fixed value

  12.     *((volatile unsigned int*)(0xd0000010)) = 250;         //取值范围为7500/时钟周期 7500/125*2偏小值

  13.     *((volatile unsigned int*)(0xd000000c)) &= (~( (0x01<<8)|(0x01<<7)|(0x01<<6)|(0x01<<3)));
  14.     *((volatile unsigned int*)(0xd000000c)) |= ( (0x01<<6)|(0x01<<0));        
  15.     while(1)
  16.     {
  17.         if((*((volatile unsigned int*)(0xd000000c))&0x01)==0) //check SDRAM Controller initialization sequence is complete
  18.         break;
  19.     }
  20. }
复制代码

出0入0汤圆

 楼主| 发表于 2021-3-4 09:25:42 | 显示全部楼层
tiky 发表于 2021-3-3 13:28
SDRAM的初始化参考函数如下,SRAM工程师建议你把中断向量压缩到512字节,从0x20000000+512开始写入你的函 ...

从0x20000000开始有多少空间为SRAM,OFL没有中断,不会用到中断向量,全部是查询哈

出0入85汤圆

发表于 2021-3-4 11:01:12 | 显示全部楼层
amigenius 发表于 2021-3-2 12:49
这是个好芯片,性能强大,设计人性化,就两点需要加强一下:一是资料开放程度和细节,二是EMC性能。 ...

这个片子EMC做到啥等级了?

出0入0汤圆

发表于 2021-3-5 21:50:45 来自手机 | 显示全部楼层
我也遇到的空间映射问题和中断向量的重映射问题。 和标准的M4的不一样。 VOT写了会出错, 但是Memory mode是0, 实在搞不懂。另外, 我驱动的480*800的竖屏, 好像不正常。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 02:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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