跳至主要內容

嵌入式农民工

盛年不重来,一日难再晨

博客文章样例

博客文章内容,支持 Markdown 和 HTML 语言。


使用指南页面配置使用指南小于 1 分钟

远程调试

在远程调试时,可能会遇到可执行文件需要 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"
        }
    ]
}

小于 1 分钟
Updating the Linux Image

计划通过 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

小于 1 分钟

选择 uboot

这里选择歪多拉的 u-boot,该版本支持 web 升级,项目说明也比较多,适合入门。

构建第一个 uboot 镜像

歪多拉的编译参考 编译

  • 源码下载
git clone https://github.com/widora/u-boot-mt7688.git

大约 1 分钟

feed

./scripts/feeds update -a
./scripts/feeds install -a

大约 1 分钟
初识

从淘宝上找到一块 12 块钱的 linux 开发板,还带 WiFi 功能,拿回来玩一玩,计划学习 uboot,linux 设备树,适配 cat1.bis(合宙家) 的 usbnet 以及 PPP 拨号等功能。 拿到 开发板 后,记录开机 log 如下。

flash & RAM 大小

存储 size 型号
FLASH 16 MB W25Q128BV
RAM 64 MB W9751G6KB-25

大约 8 分钟

文件权限变化导致的git差异

最近有一个项目中,经常出现特定两个文件显示存在git差异,但是使用BCompare比较,其二进制完全相同。使用 git diff 查看,提示如下:

从git信息看,存在文件权限变化,导致git认为文件内容有变化。

知道差异原因就好处理了,可以使用如下命令让git忽略文件权限差异。


小于 1 分钟
kconfig文件

在调整项目编译结构时,需要使用python的 kconfiglib库来解析kconfig文件,但是调整的一个kconfig文件一直无法被感知到。

一开始怀疑是该kconfig文件没有使用menu的原因,但是从kconfig文档看,应该不存在该问题。

最终定位到是source语法的使用问题。

在项目中, top level的kconfig文件使用orsource包含了中间层的A kconfig文件(为项目调整编写的新的kconfig文件)。 A kconfig文件使用osource包含目标B kconfig文件。


大约 1 分钟

编程中常用的IP地址数据接口与接口

数据结构: struct in_addrip4_addr_t等价

线程安全型接口:

  • inet_pton 转换字符串到网络字节序地址
  • inet_ntop 将网络字节序地址转换为字符串

线程不安全接口: inet_addr 将点分十进制IP地址(字符串)转换成网络字节序IP地址【返回网络字节序的地址】 inet_aton 同上【返回网络字节序的地址】 inet_ntoa 将网络字节序IP转化点分十进制IP(字符串)


小于 1 分钟