大信
大信 - 認證專家
硬件開發,軟件開發,系統開發,工程架構,方案設計

注冊於 2年前

回答
45
文章
3
關注者
3

可以按 img 的規範(見下面的結構體),做一個image的頭,64個字節,這裡面定義好其它資源文件的燒寫地址,長度。然後計算CRC,把資源文件打成一個滿足規範的img文件,然後用命令合成新的fls文件
cat w800.fls resource.img > new_w800.fls
燒寫這個新的文件,即可把你的資源數據刷寫到需要的地址空間上去.

img 文件頭的格式:
typedef struct {

unsigned int   magic_no;
unsigned short img_type;
unsigned short zip_type;
unsigned int   run_img_addr;
unsigned int   run_img_len;
unsigned int   img_header_addr;
unsigned int   upgrade_img_addr;
unsigned int   run_org_checksum;
unsigned int   upd_no;
unsigned char  ver[WM_TOOL_IMAGE_VERSION_LEN];
unsigned int   reserved0;
unsigned int   reserved1;
unsigned int   next_boot;    
unsigned int   hd_checksum;

}

只需要填寫 magic_no, run_img_addr, run_img_len, hd_checksum 這幾個字段即可。其它填0

聯盛德W80X技術交流群 570560884,群文件裡都有。

在你工程項目的這個文件夾下:
\W806\WM_SDK_W806_060\tools\W806\projects\SDK_Project\project\CDK_WS

static void uart1_io_init(void)
{

uint32_t temp;

/* PB6.7 AF Close */
temp = tls_reg_read32(HR_GPIOB_AFSEL);
temp &= ~0xC0;
tls_reg_write32(HR_GPIOB_AFSEL, temp);

/* PB6.7 AF Open opt1 */
temp = tls_reg_read32(HR_GPIOB_AFSEL);
temp |= 0xC0;
tls_reg_write32(HR_GPIOB_AFSEL, temp);

temp = tls_reg_read32(HR_GPIOB_AFS0);
temp &= ~0xC0;
tls_reg_write32(HR_GPIOB_AFS0, temp);

temp = tls_reg_read32(HR_GPIOB_AFS1);
temp &= ~0xC0;
tls_reg_write32(HR_GPIOB_AFS1, temp);

}

參考這個串口1的複用設置代碼,按手冊修改相應的寄存器參數,可以複用其它的串口。

tls_fls_write(0x1F0303, write_buf, 1247); 第一個參數是相對 0x8000000基地址的偏移量,因此你直接放一個在存儲容量範圍內的地址,不和ROM沖突的即可,比如 0x5000.

所有資料,我都放雲盤了:
這裡面有文檔,有demo工程,有上載工具
鏈接:https://pan.baidu.com/s/1obFDfqD43ZW4Ev9011rFgQ?pwd=48d5
提取碼:48d5

img 文件是flash的數據文件,可以直接燒寫。
fls 文件是 多個 img 文件打包的文件,這裡面是 secboot.img 和 w800.img 兩個文件
map 是gcc編譯鏈接時產生的連接符號文件,幫助調試使用。
ota.img 也是下載鏡像文件
.gz 是img的壓縮文件,用來網絡更新燒flash使用的。

還有一個方法,就是在 init 初始化中,關閉串口 0

這種溫度傳感器,板子周圍需要開隔離槽,並且盡量遠離處理器

把一個 IO 口跟 reset 連起來,然後拉低電平

連接路由器是否穩定? 我測試這種網橋模式,是穩定的,手機連它上網沒問題,不會出現卡頓。

可以創建新工程,也可以把原來的工程內容刪了再改下名。也是新的工程

是的,因為固話的引導程序是通過 uart0 下載數據的。

下載 img 或者 fls 後綴的文件都可以。

發布
問題