W801 SDK相关软件问题

发布于 2022-05-16 21:34:44

使用W800 SDK的过程中有几个问题,请教一下,问题如下:
1、封装后FREERTOS的和queue队列相关的函数,实际上把原函数里面的传输结构体队列的功能(值传递,不是指针传递)取消了,好像只能传输4个字节的整型值(或者说是指针也可以),以后看能不能补上这个补丁;
2、时钟使能里面有GPIO使能选项,没有看到具体使能的代码,请问在哪里使能的?这个使能起到什么作用?好像IO使用一直都可以。
3、内部RAM分为160K和128K两个部分,其中128K是供SDIO/SPI/UART使用做为数据缓冲。软件编译后RAM使用大概150K(bss段大小),这个150K是指160K里面的?还是两部分RAM使用量总和?那128K是不是只能给三个指定外设使用?使用SDIO/SPI/UART这三个外设编程的时候,什么时候使用的是这128K的RAM?三个外设本身内部指定的收发缓冲区好像也没多少,远达不到这么大内存。
4、内核支持DSP和浮点处理,这个使用的时候需要额外指定吗?写一段代码,怎么知道是使用内核的硬件支持还是软件计算?
5、有没有不修改LD文件,直接指定文件里某个函数在内存运行的简单方法?比如在函数前面简单加个前缀?麻烦举个例子。
多谢!

查看更多

关注者
0
被浏览
1.7k
ZYQ
ZYQ 2022-05-16
我已不再支持W80X任何相关问题的回复,请大家不要私信,有问题找 isme 谢谢

非常感谢你使用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

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览