ZYQ
ZYQ
我已不再支持W80X任何相关问题的回复,请大家不要私信,有问题找 isme 谢谢

注册于 1年前

回答
172
文章
8
关注者
11

demo 例子中是有http 升级的例子的可以参考下

非常感谢你使用W800芯片,针对你疑惑做如下解答
1、封装只是为了SDK 是更好符合当时的软件设计架构<说白了就是更方便当时软件设计开发^^>,如果你有其他需求的话,可以调用Freertos 本身的API 接口也是可以的。
2、针对这个问题的话使用,在SDK 的main 函数的开始是有使能的,你可以查阅下代码看下。
image.png

3、这个的话你看链接文件的话,实际上定义RAM 的话是定义在一起的,软件上来说的话并没有明确的限制,你可以当作一块RAM使用,ld文件中也是这样用的。
你说的128K 由于跟那些外设挂载在同一个总线上,是为了数据交换方便,与CPU 之间是有AHB2AHB 桥做分界线,128KB作为CPU来说是都可以直接访问的,作为程序执行本身来说
并没有什么太大的区别,128KB 只是告诉开发者某些外设一定可以用作缓冲区,同时也表明剩下的160KB 这些外设不一定可以使用。
4、针对浮点运算的话,你如果使用CDK 编译的话在工程设置选项里有 -mhard-float 选项,是默认使用的硬件浮点处理,这个其实是对编译器的一种限制行为,如果在linux 下编译的话对应的makefile 里面也会有的。DSP的话也是在工程配置选项,是有链接DSP的库的,你必须调用对应的API 才可以使用DSP指令,或者你直接调用 DSP 汇编指令达到你的功能,这些都是可以的。
image.png

5、这个问题,没有人规定必须修改LD 文件才能使得某个函数在RAM 中运行啊,取巧的方法就是直接将你的函数放在 data 段里面,因为data 段中的数据一定在RAM 中,做法也是比较简单的,
只需要在对应的函数前面加上限定符就OK attribute ((section(".data")))《论坛下划线不显示》,需要注意的是,被修饰的函数体里面不能调用存放在FLASH 中的函数接口。W800的编译环境就是基于gcc 编译链去做的gcc ld 那一套完全是适用的。image.png

整个程序发一下吧 ,直接问这个问题

保证CDK工程下只有一个工程,擦除W800的Flash , 重新编译 debug 看下,我怀疑你是Flash 没有擦除导致,需要明确的的是YOC 的 FLASH 布局分布与W800 官方的FLASH 布局分配是不一致的,刚才找了个YOC 的固件编译了一下,通过反汇编文件确实看到了 你刚才截图的那些指令,由此可以大概确定你是没有擦除FLASH 导致的.
由于CKLINK 的 debug 是基于FLASH 的,他要从FLASH 不断的取指执行,FLASH 是什么就跟你显示什么,而下方的你看到的汇编代码是根据地址cklink的反馈的地址进行跳转的,这样就会给你产生错觉,以为不一样。

只有这一张图着实不好分析,方便的话可以把你的debug 的工程发出来,不要clean 的那种

是不是连接板子的线没接对

CPU内核是XT804内核,在百度网盘链接中有,寄存器手册也在

使用 非操作系统的代码的话 找到 gcc_csky.ld 这个文件对照着W800的改下就可以了,改 MEMORY 那里的定义就可以了

错误信息你给完美的错过了,都没有拍上啊,还有就是你确定这是W806的工程么,W806 可没有bt wlan 这些啊,你应该是把btcontroller;wlan; 这两个添加上了
W806 没有这个不需要添加的
image.png

W806 单机库的话跟STM32 hal库的使用方法基本一致,你参考着做就可以了

直接使用W806的单机工程吧

你的这个分析是很有道理的,确实是这样的,你可以去除调试器跑一下,虽然开启了cache,关于你的想法将代码段放到RAM中是可行的,但是需要考虑你得RAM是否能够容纳这么大的代码段,可以将部分函数放到RAM中执行以达到加快执行效率,如果可以的话能否放出代码,看看能到否帮你优化下

不上系统的话参考W806裸机库那样做,上系统的话可以参考w806的freertos工程,本人不建议从官方给的sdk库文件剥离出来,因为sdk藕合度太高了

发布
问题