博客文章内容,支持 Markdown 和 HTML 语言。
远程调试
在远程调试时,可能会遇到可执行文件需要 sudo 权限的情况,这时需要在 launch.json 中添加如下配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "sudo myapp",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"miDebuggerPath": "${workspaceFolder}/gdb_root.sh",
"MIMode": "gdb"
}
]
}
计划通过 UBOOT 下载 KERNEL 镜像到 SRAM 的方式升级下 kernel 代码,文件名称为 openwrt-ramips-mt7688-widora1664-squashfs-sysupgrade.bin
.
? - alias for 'help'
bootm - boot application image from memory
cp - memory copy
erase - erase SPI FLASH memory
go - start application at address 'addr'
help - print online help
loadb - load binary file over serial line (kermit mode)
md - memory display
mdio - Ralink PHY register R/W command !!
mm - memory modify (auto-incrementing)
nm - memory modify (constant address)
printenv- print environment variables
reset - Perform RESET of the CPU
rf - read/write rf register
saveenv - save environment variables to persistent storage
setenv - set environment variables
spi - spi command
tftpboot- boot image via network using TFTP protocol
version - print monitor version
选择 uboot
这里选择歪多拉的 u-boot,该版本支持 web 升级,项目说明也比较多,适合入门。
构建第一个 uboot 镜像
歪多拉的编译参考 编译
- 源码下载
git clone https://github.com/widora/u-boot-mt7688.git
从淘宝上找到一块 12 块钱的 linux 开发板,还带 WiFi 功能,拿回来玩一玩,计划学习 uboot,linux 设备树,适配 cat1.bis(合宙家) 的 usbnet 以及 PPP 拨号等功能。
拿到 开发板
后,记录开机 log 如下。
flash & RAM 大小
存储 | size | 型号 |
---|---|---|
FLASH | 16 MB | W25Q128BV |
RAM | 64 MB | W9751G6KB-25 |
文件权限变化导致的git差异
最近有一个项目中,经常出现特定两个文件显示存在git差异,但是使用BCompare比较,其二进制完全相同。使用 git diff
查看,提示如下:
从git信息看,存在文件权限变化,导致git认为文件内容有变化。
知道差异原因就好处理了,可以使用如下命令让git忽略文件权限差异。
在调整项目编译结构时,需要使用python的 kconfiglib库来解析kconfig文件,但是调整的一个kconfig文件一直无法被感知到。
一开始怀疑是该kconfig文件没有使用menu的原因,但是从kconfig文档看,应该不存在该问题。
最终定位到是source
语法的使用问题。
在项目中, top level的kconfig文件使用orsource
包含了中间层的A kconfig文件(为项目调整编写的新的kconfig文件)。 A kconfig文件使用osource
包含目标B kconfig文件。