ZYQ
ZYQ
我已不再支持W80X任何相關問題的回複,請大家不要私信,有問題找 isme 謝謝

注冊於 2年前

回答
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藕合度太高了

發布
問題