CH563Q的內(nèi)部ram為32K還是64K?
空白CH563Q芯片能否通過以太網(wǎng)接口下載程序?如果可以該如何操作
1.CH563 RAM 分配軟件可調(diào),最小32K,最大96K。
2.CH563芯片出廠內(nèi)置Boot,支持USB,串口,以太網(wǎng)下載。按住Boot鍵上電,然后使用我司ISP工具進行下載。詳細可參考CH563EVT 包資料
沁恒管理員:
????你們好!我用CH563做產(chǎn)品有7~8年了,有個疑問想請教下:
????“CH563 的外設組件包含 480K 的 FLASH 閃存、128K 可動態(tài)分配的 SRAM、28K 的 EEPROM”
????“其中 256K 可以用于 BootLoader”
? ? “片內(nèi) SRAM 共 128K,用于程序緩沖和數(shù)據(jù)緩沖。用戶可根據(jù)需求自行分配,通常分法為:32K、 64K 或 96K 作為程序緩沖區(qū),剩余作為數(shù)據(jù) RAM”
????????我的疑問是CH563一共有480K FLASH,bootloader用了256K,28K的EEPROM實際也是FLASH分割出來的,所以實際剩下的FLASH應該是480-256-28=196K.但是沁恒的bootloader是把用戶程序加載到SRAM中運行的(這一點我是在做動態(tài)鏈接時驗證出來的,我通過IAP修改FLASH固定位置程序,然后引導加載無效,但是重新啟動MCU就可以),所以如果用MDK的scf文件來分配CODE和DATA區(qū)域無論如何兩者的和不能超過128K,我想請問下有沒有辦法提高用戶程序的容量,比如CODE和DATA超過128K的解決方案。因為CH563這個芯片功能不錯的,同時處理以太網(wǎng)和USB協(xié)議稍微復雜點可能容量就不夠用了。
????????想法1:我之前想過是不是可以抹掉bootloader,把用戶程序直接寫進FLASH來執(zhí)行(可能FLASH里執(zhí)行慢一點這個也能接受),這樣用戶CODE可用480K,RAM區(qū)域就可以擴大到128K,但是這樣帶來的風險就是沒有boot芯片有可能會變磚,可能要用到jlink才能下載了。這個方案也能接受,希望沁恒指導下如何操作。
????????想法2:芯片里面有bootloader可以USB、ETH、串口下載,說明bootloader里面已經(jīng)集成了大量的函數(shù)庫,而且這個boot程序應該是常年不變的,那么可以提供給用戶boot程序里的函數(shù)指針地址,直接引用地址調(diào)用就行了,這樣可以極大的減少用戶程序代碼量,同時還能保留boot程序的完整性,芯片也不會變磚。是不是可以有這種方案提供。
????以上只是個人理解,如果沁恒有解決方案請告知。這個可能關(guān)系到芯片的保密等方面,如不方便在論壇回復請郵件聯(lián)系:
????個人信息保護,已隱藏 或者 個人信息保護,已隱藏
CH563用戶代碼空間大小是224K。如您所說,默認SCF配置上電是64KRAM,即拷貝至RAM的代碼大小為64K。此時,超過64K界限的用戶代碼,也是能夠正常運行,讀取指令,這個是芯片硬件的自身功能。所以真實代碼大小限制就是224K.不過要關(guān)注的就是FLASH中直接取指的代碼運行速度較慢,針對代碼函數(shù)具體功能可以控制其存在于64K界限之前還是之后。同時FLASH操作相關(guān)函數(shù)一定確保分配在64K界限之前。
收到,我驗證下。感謝
今天驗證了,我使用沁恒的CH563NET_keil4.lib,如果加上自己的代碼,很快代碼區(qū)就接近64k,RAM區(qū)也接近64k,嘗試了很多次,只要RAM+CODE區(qū)大于128K就不能執(zhí)行,有沒有什么解決方案啊,這個224K怎么全部用起來?
FLASH占用可以超64k,但是RAM是怎么的都不能超過配置大小的。