CH579(Cortex-M0)网络IAP升级介绍及问题解答--(持续更新) 网络升级
CH579网络IAP升级的源码可以从码云(Gitee)上git clone下来。
码云地址:https://gitee.com/maji19971221/wch-ch57x
以下是一个朋友问的几个常见问题,这边弄一个总结文档。
一、MCU基本工作机理方面的疑问:
1,“bootloader_vector_dynamic_test” 文件部分:

疑问:
1) 这块程序看着只是将MCU程序执行的代码启动重定位到0x400吗? 像原来的中断向量TIMR0(0X0040), ……, ETH(0X005C), 等等是否有变化?
答:是的,因为M0内核的MCU 。需要在FLASH最前面放中断向量表,否则程序无法正常启动。所以在程序的最前面放了一个中断跳转的工程。0x400和0x4400一个就是IAP程序,一个就是APP用户程序的起始地址。
2) MCU执行代码的流程是如何的?是从MSP的地址开始执行,然后跳转到其他指定地址去执行吗(是何时指定这个地址的?)?。*.bin文件用贵司的工具生成后,默认带了私有的16bytes头,IAP_FLASH逻辑是将升级*.bin代码放到0x4400地址,然后跳转到0x4400地址执行APP程序的吗?那0x4400地址代码放的是私有的16bytes头信息,如何执行APP程序的?
答:16个字节的数据因为实在一开始传过来的,所以是单独处理的。具体可以看用户程序里面,以太网的接收函数那部分。然后后面的APP才是放在0x4400。
3) 升级标志位不用dataflash存,单独划出512字节code区(比如最末尾区域)来存储升级标识是否可以?
答:可以。只要你别把这块FLASH擦除即可。
一、Demo代码的方面的实现疑问:

疑问:
1)FLASH文件里面IAP升级程序,98*1024地址是0x18800.
入下图 tcpclient文件里面下载bin写到flash是bin_addr=0x14400, 两个地址感觉对不上?
答:这个是因为hextobin软件的原因。因为工程时从0x4400开始。但是软件在转成bin文件的时候,前面0x00-0x4400都是0所以造成了浪费。所以0x18800就是0x4400+0x10000+0x4400。如果你自己可以做一个hextobin软件,把前面0去掉,那么就可以从0x14400开始了。
2)FLASH文件里面IAP升级程序,蓝色虚框里面的“code_addr<162*1024”.是什么含义,没看明白。
答:根据上面的回答,可以知道下载下来的程序是放在0x18800的地址。这个就是98KB,再加上我定义的用户程序是64KB,98+64 =162KB。
CH579(Cortex-M0)网络IAP升级介绍及问题解答--(持续更新) 网络升级的更多相关文章
- 私人网盘系统2.0—全部升级为layUI+PHP(持续更新中)shang
网盘系统2.0 上周,我做了第一版的“私人网盘系统”,http://www.cnblogs.com/sunlizheng/p/7822036.html 没看过的朋友可以去看一下,这周在家升级做了第 ...
- 网络存储技术介绍(1) ( based on zt)
最近由于某同学微信发了一些网络存储的文章,开始感兴趣,稍微收集了一些 一. 网络存储技术 http://ask.zol.com.cn/q/187044.html (yxr:很老的技术介绍吧) 网络 ...
- iOS开发网络篇—简单介绍ASI框架的使用
iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...
- 网络攻防工具介绍——Wireshark
网络攻防工具介绍 Wireshark 简介 Wireshark(前称Ethereal)是一个网络封包分析软件.它是一个理想的开源多平台网络协议分析工具.网络封包分析软件的功能是撷取网络封包,并尽可能显 ...
- 家庭洗车APP --- Androidclient开展 之 网络框架包介绍(一)
家庭洗车APP --- Android客户端开发 之 网络框架包介绍(一) 上篇文章中给大家简单介绍了一些业务.上门洗车APP --- Android客户端开发 前言及业务简单介绍,本篇文章给大家介绍 ...
- SequoiaDB版本在线升级介绍说明
1.前言 在SequoiaDB数据库发展过程中,基本保持每半年对外发行一个正式的Release版本.并且每个新发布的Release版本相对老版本而言,性能方面都有很大的提高,并且数据库也会在新版本中加 ...
- kali linux学习笔记(四) : 网络端口大全介绍
端口大全介绍 2端口:管理实用程序 3端口:压缩进程 5端口:远程作业登录 7端口:回显 9端口:丢弃 11端口:在线用户 13端口:时间 17端口:每日引用 18端口:消息发送协议 19端口:字符发 ...
- Openstack 网络服务 Neutron介绍和控制节点部署 (九)
Neutron介绍 neutron是openstack重要组件之一,在以前是时候没有neutron项目. 早期的时候是没有neutron,早期所使用的网络的nova-network,经过版本改变才有个 ...
- Openstack 网络服务 Neutron介绍和控制节点部署 (十)
Neutron介绍 neutron是openstack重要组件之一,在以前是时候没有neutron项目. 早期的时候是没有neutron,早期所使用的网络的nova-network,经过版本改变才有个 ...
- 今天升级Xcode 7.0 bata发现网络访问失败。
今天升级Xcode 7.0 bata发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Securit ...
随机推荐
- JSP页面实现验证码校验
目录 验证码校验分析 生成验证码 测试验证码 校验验证码 测试验证码校验 添加验证码刷新 在网页页面的使用中为防止"非人类"的大量操作和防止一些的信息冗余,增加验证码校验是许多网站 ...
- Java8新特性之Stream流(含具体案例)
一.概述 Stream 流是 Java 8 新提供给开发者的一组操作集合的 API,将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选.排序.聚合等.元素 ...
- 监控CPU状况并发送邮件shell脚本
#!/bin/bash #监控CPU状况并发送邮件 DATE=$(date +%y%m%d) TEMP=$(mktemp tmp.XXX.txt) cat /proc/cpuinfo >$TEM ...
- 使用 Apache Hudi 实现 SCD-2(渐变维度)
数据是当今分析世界的宝贵资产. 在向最终用户提供数据时,跟踪数据在一段时间内的变化非常重要. 渐变维度 (SCD) 是随时间推移存储和管理当前和历史数据的维度. 在 SCD 的类型中,我们将特别关注类 ...
- 4.MongoDB系列之索引(一)
1. 执行计划查看 db.getCollection('users').find({'username': 'shenjian'}).explain('executionStats') 结果查看,先大 ...
- js排序的基础原理理解
在了解数组排序前,我们先了解下如何交换两个数字的位置 假设我们有这么一个数组 var arr=[1,2,3] 我们想交换1和3两个的位置我们该如何做呢? 最简单的肯定是手动赋值,如下 var arr= ...
- 如何在IDEA中创建Module、以及怎样在IDEA中删除Module?
文章目录 1.为何要使用Module? 2.Module的创建 3.如何从硬盘上删除module 1.为何要使用Module? 目前主流的大型项目都是分布式部署的,结构类型这种多Module结构.不同 ...
- java 入土--集合详解
java 集合 集合是对象的容器,实现了对对象的常用的操作,类似数组功能. 和数组的区别: 数组长度固定,集合长度不固定 数组可以存储基本类型和引用类型,集合只能存储引用类型 使用时需要导入类 Col ...
- Java I/O(4):AIO和NIO中的Selector
您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 在Java NIO的三大核心中,除了Channel和Buffer,剩下的就是Selector了.有的地方叫它选择器,也有叫多路复用器的(比如Ne ...
- Codeforces Round #751 (Div. 2)/CodeForces1602
CodeForces1602 Two Subsequences 解析: 题目大意 给你一个字符串 \(s\).你需要两个非空字符串 \(a\) 和 \(b\) 并且满足下面的条件: 字符串 \(a\) ...