大信
大信 - 认证专家
硬件开发,软件开发,系统开发,工程架构,方案设计

注册于 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 后缀的文件都可以。

发布
问题