搜索
bottom↓
回复: 8

TKM32F499 入门学习笔记(1):启动分析

[复制链接]

出0入0汤圆

发表于 2021-2-5 22:15:13 | 显示全部楼层 |阅读模式
本帖最后由 astankvai 于 2021-2-5 22:28 编辑

学习一款单片机, 首先要了解其启动流程以及存储器映射,但是, TKM在这方向的资料, 基本等于0。 于是分析代码:
   1. BOOT引脚接地,该设置理解为 从 ROM启动
   2. PA1 ,    可以理解为: 当PA1为高电平时,从系统ROM启动(ROM的地址在芯片规格书中写的是 0x1FFF 0000- 0x1FFF 3FFF), 共16KB。 这个有点像ST的DFU,  内置的bootloader. 当PA1为0时,从用户程序启动(可以理解为通常所说的0地址). 但是,这里相当于浪费资源, 应该设计成根据boot脚的电平来进DFU boot还是跑其他用户应用。
   3. PA13,  这个是一个自定义的bootloader使用的检测入口, 当该引脚为高电平时, 停留在boot中(这个usb boot是在用户程序空间的,占用用户程序空间).  这个boot不是必须的。 用户可以自己编写。
   4. QSPI.  从规格书可以看到, QSPI 没有提到映射到程序存储空间,是copy代码到ram执行还是XIP, 这个我们不知道。 但是, 从下载工程的配置以及下载算法可以分析出, QSPI 被映射到程序存储空间 0x70020000, 长度2MB. 如果使用大容量SPI NOR, 估计可能会有问题,用QSPI访问没有问题,但是映射空间方式可能访问不了。 更新:看了程序, 0x70020000是 SDRAM的起始地址, 由此看来,程序是从spi nor中被copy到sdram中,然后在ram执行的。
   5. 中断向量的重映射。  如果自己写bootloader,这个是必须要关心的, 但是规格书没有提到相关的信息。 示例程序一开始就有一个RemapInterrupt函数, 这个就是中断向量的重映射,可以分析map文件。 SCB->VTOR = 0;
        SCB->VTOR |= 0x1<<29;  示例代码有相关程序, 但是规格书或是TRM中, 没有任何相关信息。
   6. SRAM。  从程序 看,起始地址是0x2000 0000, 大小未知。


阿莫论坛20周年了!感谢大家的支持与爱护!!

有一句段子是这样说的,身家过亿的只关心自己的身体,身家千万的,在担心传承,勉强糊口度日才天天看国际新闻,关心国家大事。

出0入143汤圆

发表于 2021-2-6 00:24:57 | 显示全部楼层
       楼主简单几句话,洋洋洒洒地分析了对TK499的启动流程,流露出了对国产单片机的热爱,难能可贵。众多应用开发者当中,感觉到你那股清流,是对国产单片机的执着信念。
       感谢你的支持,我这有两款即将上市,配合TK499作重点应用展示的IPS高端屏,打算送给你以示鼓励。你看方便的话到我们的官方淘宝店,随便拍一样东西,留言“启动分析送屏”,请不要付款,客服获取你的收件地址后直接给你寄送。

出0入0汤圆

 楼主| 发表于 2021-2-6 00:29:35 | 显示全部楼层
tiky 发表于 2021-2-6 00:24
楼主简单几句话,洋洋洒洒地分析了对TK499的启动流程,流露出了对国产单片机的热爱,难能可贵。众多 ...

谢谢版主。
目前来说国产的文档资料是有欠缺, 希望大家能一起完善, 把一些调试过程遇到的坑一起填了!

出0入0汤圆

 楼主| 发表于 2021-2-17 10:04:03 | 显示全部楼层
继续上次:
       因为在为TKM32F499写一个USB HID的bootloader,  所以需要探究启动流程。现在bootloader基本已经工作, 但是还是有些小问题没有解决。
    通过实际的测试发现,  这个芯片是把程序存储在SPI NOR中, 启动时, 通过ROM程序把代码从spi nor中搬运到sdram中运行。 sdram 的地址目测是从  0x70000000 开始, 之后连续的8MByte。  当然, boot ROM应该XIP, 直接在flash rom中运行,这个不需要copy到sdram中执行。  所以, 理论上说, 程序 代码可以最高8MB (自由ram使用量只有sram的4K).  从中断向量的映射来说, 好像是把sram映射到0地址, 这个,就需要把中断向量表copy到 sram中, 0x20000000, 这和st等其他MCU的地址是一样的。 但是有一点奇怪的是: MEM_MODE的值并不是3, 而是0。 还有一点就是bootloader中使用的中断, 在应用再使用, 就会用不了, 应该不是中断映射的问题, 可能是其他初始化问题, 需要再进一步分析。
       目前测试,给人的感觉是芯片不太稳定,  手动复位, 有时会起不来,上电复位有时也会起不来。 晚点加个复位芯片再试一下。

出0入0汤圆

发表于 2021-2-17 13:01:07 | 显示全部楼层
astankvai 发表于 2021-2-17 10:04
继续上次:
       因为在为TKM32F499写一个USB HID的bootloader,  所以需要探究启动流程。现在bootloader ...

我也遇到过很多次这种情况,比如复位键按的时间长了一点就会直接死掉,jlink连上读了下发现是直接进Memfault,可能是是SDRAM控制器或者哪里的问题,只有得断电复位才能解决,复位芯片可能用处不大

出0入0汤圆

 楼主| 发表于 2021-2-17 13:33:48 | 显示全部楼层
战0舰 发表于 2021-2-17 13:01
我也遇到过很多次这种情况,比如复位键按的时间长了一点就会直接死掉,jlink连上读了下发现是直接进Memfa ...

是的, 刚加了复位芯片, 也还是有这种情况。  可能与电源设计有关,多个电源的上电时序可能有要求。 另外,还发现LTDC 有点奇怪,  直接写一个层的几个点, 屏幕没有反应,  多写几行或几个层才有反应,不知道底层的dma是怎么控制 的。

也不知道有没有用这颗芯片量产过项目。

出0入0汤圆

发表于 2021-2-18 05:19:52 | 显示全部楼层
谢谢分享!!!

出0入8汤圆

发表于 2021-5-12 18:19:11 | 显示全部楼层
bootloader中使用的中断, 在应用再使用的时候需要先注销,然后再用吧

出0入0汤圆

 楼主| 发表于 2021-5-14 08:24:14 | 显示全部楼层
蓝蓝的恋 发表于 2021-5-12 18:19
bootloader中使用的中断, 在应用再使用的时候需要先注销,然后再用吧

不需要,使用的中断向量表不一样。 中断入口地址都不一样了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-12 18:20

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

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