Linux:
终端命令工具:ohmyzsh
这是一个类似于bash的解释器。但是不同的是,这个平台支持很多的插件安装,在使用过程中我实际体验还是非常不错的。一些比较使用的功能包括:
-- 路径大小写自动匹配
-- git分支自动显示
-- crtl r 快捷匹配过去使用过的命令
-- ctrl t 模糊搜索当前路径下的所有文件
还有很多插件我没有用,都可以在~/.zshrc中配置,使用说明官网写的非常清楚。
#安装需要首先执行:
sudo apt install zsh
#然后在执行:
sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
picocom 命令:
这是一个串口调试工具,常用使用非常简单但是非常实用。
sudo apt install picocom
#打开串口命令
sudo picocom -b 115200 /dev/your_tty_id
#退出按 crtl a+x 就行
netcat(nc)命令:
这个东西本质上就是一个简易的socket,可以传输文本数据;文件 或者其他的。我一般是使用它传输一些数据和文件,其他的不常用。
-h 帮助信息
-l 监听模式
-n 指定数字的IP地址,不会进行DNS解析
-p 指定监听的本地端口
-u UDP模式
-v 显示详细的信息
sudo apt install nc
#连接对应port服务器
nc -v 192.168.xx.xx 3365
#可以这样等待连接直接传输文件
cat file.txt | nc -nvl 3365
POSIX标准:
目前对它的了解是:这是一个接口标准,由于Linux的各种版本发布非常非常多,导致如果没有标准,那么一个软件要适配所有发行版本的难度极高。IEEE组织设定了一个标准,这解释了为什么个个Linux的命令比如ls clear cd mkdir 等基本命令可以通用。
如果你向详细看看是什么:
标准线上地址: http://www.unix.org/version3/online.html 注册后可以在线阅读或者下载。
一些小概念:
XIP设备:
xip:execute in palce 直译就是 “就地执行”。
作用就是可以不需要将代码从flash中拷贝到RAM中来执行,而是直接在flash中进行片内执行。但是注意,片内执行并不是说就在flash中运行。CPU基本功能就是读取指令并执行,所以只是直接从flash中读取而不需要拷贝到RAM再读取了。
另外,XIP实现要有软件支持,具体说明:
程序在跑起来之后大概分为三部分:
1.代码段 其中包括只读代码 执行代码
2.数据段 可读可写的数据
3.堆栈段 储存函数调用和局部变量
其中数据段需要更改的部分是需要写的,虽然flash可写,但是跟RAM是不一样的(我也不知道具体怎么不一样)。所以一小部分的代码仍然是要拷贝到RAM中的。所以就需要软件进行地址映射。
ISP与OTA:
ISP是一种下载芯片编程技术,不需要拆芯片可以通过串口,IIC接口直接编程芯片上的程序。而OTA则是基于MQTT或者HTTPS协议,无限的远程程序更新升级。
二者有一个共同需求,就是本地都是依靠bootloader来完成接收,数据解析,数据回滚等等接收方要做的事情。
bootloader:
bootloader是上电运行的第一段代码,真正的硬件最基本的初始化其实都是在这里执行的。而除了初始化,bootloader还要控制上述芯片升级的过程。
ISP过程:
上位机发送enter指令 ---- 接收数据帧 ---- CRC校验 ---- 回ASK ---- 写入FLASH ---- 跳转执行代码
当CRC失败可能会重新接收也可能直接失败,具体看bootloader怎么写的。
OTA过程:
云端发送数据包 ---- WIFI模块接收数据包 ---- 解析数据包(比如AES加密)---- 写入FLASH备份区域---CKS(checksum)校验 ---- 失败则回滚
|
成功则写入FLASH ---- 更新分区表 ---- 执行新代码