加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

初识OK6410

发布时间:2020-12-15 17:35:27 所属栏目:百科 来源:网络整理
导读:新手一只,只驱动了几只LED,知识有限,,以下笔记纯属个人理解,有错的地方还望轻喷!!!! 学过STM32想往更NB的ARM发展,于是买了一块OK6410。由于以前学的是STM32,所以自然是要先跑跑裸机程序咯。 然后照着裸机教程安装了RVDS2.2,接着写了一个LED的程

新手一只,只驱动了几只LED,知识有限,,以下笔记纯属个人理解,有错的地方还望轻喷!!!!


学过STM32想往更NB的ARM发展,于是买了一块OK6410。由于以前学的是STM32,所以自然是要先跑跑裸机程序咯。

然后照着裸机教程安装了RVDS2.2,接着写了一个LED的程序,觉得高大上的ARM裸机跑起来就是个单片机吗?不过如此。但是发现掉电后程序需要重新下载,对于我们这些学单片机同学的感到这不合理啊!为什么下进去的程序掉电要重新下载呢?然后就开始查资料找问题,发现廉价的JLINK并不支持烧写NAND FLASH。那为什么能用JLINK能仿真呢?因为JLINK仿真时是把程序写到了内存里,即6410上的DDR中,而DDR掉电后数据是会丢失的,这也就是为什么每次都要重新下载程序。

搞清楚了这个问题,那回过头来再去看看裸机教程,为什么编译器的设置中要将RO Base的地址和entry point设置为0X5000000呢?先看看OK6410核心板的原理图


可以看到芯片的片选接的是XM1CSN0,再来看看另一张图




可以看到XM1CSN0是与Memory Port 1相关联的,继续看图


而Memory Port 1的内存地址是0X50000000 ----- 0X60000000;所以RVDS的将RO_Base和entry point 设为0X5000000使得程序的链接地址和入口点为0X5000000,这样当程序运行时就是从0x50000000开始运行的。

现在为题又来了,DDR在使用时是要一定时序和初始化才能使用的,不像单片机内部的RAM,内部RAM与CPU通讯是由单片机的生产商做好的。那为什么我们能使用DDR呢?应为飞凌的裸机教程是在板子上有bootloader的情况下写的,所以我们看到的他提供的例程中的启动文件只有一个转跳,非常简单。后面的都是C语言了。

但我不想用带bootloader的板子跑真正的裸板程序怎么办呢?找了下资料发现可以用openJTAG烧写NAND FLASH,还有一个方法就是使用SD卡启动!当然还有其他方法。

我手上没有openJTAG,而且openJTAG也要180大洋,,,对于我这种屌丝买不起啊!于是我决定使用SD卡的启动方式去跑纯裸板程序!怎么做?下次搞定在写,,嘻嘻!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读