Day 1 公欲善其事,必先利其器

初始环境配置

在我的Thinkpad SL410K老本子上装了Linux mint xfce后,把开发环境简单搭建下:

1. 配置中文输入法,software manager里面搜googlepinyin,够用。
2. 安装git, 做好版本管理。
3. 安装zsh,提高命令行工作效率。Powerlevel10k, 插件:git,zsh-autosuggestions,zsh-syntax-highlighting,history。
4. 安装vscode,添加通义灵码插件, 安装C/C++插件。

5. 安装交叉编译工具链。

由于toolchains是32位的,系统是64位的,需要进行以下操作,让系统能够运行32位toolchains
 

# 确保多架构已启用
sudo dpkg --add-architecture i386
sudo apt-get update

# 安装核心32位库(会自动匹配系统兼容的版本)
sudo apt-get install libc6-i386 lib32z1 lib32stdc++6

从 “基础到上层” 的开发顺序排序

建了个项目文件夹, 并在下面把每一个知识点都建一个文件夹,准备一个个梳理一遍。

嵌入式开发的逻辑是 “先懂硬件接口→再做底层驱动→然后搭系统框架→最后开发应用”,排序如下:

0. 调试与工具(贯穿全流程的 “辅助手段”)
  • JTAG/SWD 调试:硬件断点、单步执行,定位底层代码问题。
  • 交叉编译工具链:如 arm-none-eabi-gcc(裸机 / RTOS)、arm-linux-gnueabihf-gcc(Linux)。
  • Makefile/CMake:管理多文件编译,定义依赖关系。
1. 硬件基础层(最底层,决定 “怎么和硬件对话”)
  • GPIO(通用输入输出):所有外设的基础(如 LED、按键、传感器引脚),先掌握高低电平、方向配置。
  • 时钟系统(Clock):学习 CPU 主频、外设时钟源(如 PLL、HSE/LSE),理解 “时钟决定设备运行速度”。
  • 中断系统(IRQ):掌握外部中断、定时器中断的配置,理解 “异步事件如何被 CPU 响应”。
  • MCU/CPU 架构:了解指令集(如 ARM Thumb-2)、寄存器(如 R0-R15)、存储映射(RAM/Flash 地址范围)。
2. 底层功能外设(基于硬件基础,实现 “具体功能”)
  • UART(通用异步收发传输器):RS232/485 的底层依赖,先学串口通信(波特率、奇偶校验)。
  • DMA(直接内存访问):理解 “不占用 CPU,直接在外设和内存间传数据”(如 UART/SPI 数据通过 DMA 传输)。
  • PWM(脉冲宽度调制):用于电机调速、LED 调光,学习占空比、频率配置。
3. 芯片间通信接口(实现 “设备与设备对话”)
  • IIC(I²C,集成电路总线):用于连接传感器(如温湿度传感器 SHT30),掌握主从通信、地址仲裁。
  • SPI(串行外设接口):用于高速通信(如 LCD 屏、Flash),学习 CS 片选、全双工传输。
4. 系统启动层(让硬件 “跑起来”)
  • bootloader:学习启动流程(初始化硬件→加载内核→跳转到内核),如 U-Boot 的配置与编译。
5. 操作系统层(管理 “硬件资源与任务”)
  • kernel(内核):先学 RTOS(如 FreeRTOS)的任务调度、信号量,再扩展到 Linux 内核(进程管理、驱动框架)。
  • filesystem(文件系统):基于内核,学习 FAT32、ext4、JFFS2 等,理解 “数据如何在 Flash 中存储”。
6. 总线与工业协议(实现 “多设备组网”)
  • CAN(控制器局域网):汽车 / 工业常用总线,学习帧格式(数据帧、远程帧)、仲裁机制。
  • LIN(本地互联网络):汽车低成本总线,基于 UART,学习主从通信、帧同步。
  • RS232/RS485:工业串口通信,RS485 支持多节点,学习差分信号、总线阻抗匹配。
  • Modbus:工业通用协议(基于 RS485/CAN),学习 RTU/ASCII 模式、功能码(如 03 读保持寄存器)。
7. 通用接口与无线通信(扩展 “设备连接范围”)
  • USB:通用接口(如 USB HID、CDC),学习枚举过程、数据传输(批量 / 中断传输)。
  • WiFi:无线局域网,学习 STA/AP 模式、TCP/UDP 通信(如通过 ESP8266 模块)。
  • Bluetooth(蓝牙):短距离无线通信,学习 BLE(低功耗)、经典蓝牙的设备配对与数据传输。
8. 应用开发层(实现 “用户功能”)
  • Qt:嵌入式 GUI 开发,基于 C++,学习窗口、控件、信号与槽,开发交互界面。

文件夹:
0-0_tools/

1-0_gpio/

1-1_clock/

1-2_irq/

1-3_cpu-architecture/

2-0_uart/

2-1_spi/

2-2_i2c/

2-3_pwm/

2-4_adc-dac/

2-5_timer/

3-0_bootloader/

3-1_device-tree/

4-0_rtos/

4-1_linux-kernel/

4-2_filesystem/

5-0_can/

5-1_lin/

5-2_rs232-rs485/

5-3_modbus/

5-4_ethernet/

6-0_usb/

6-1_wifi/

6-2_bluetooth/

6-3_zigbee/

6-4_lora/

7-0_qt/

7-1_embedded-database/

7-2_ai-frameworks/

8-0_low-power/

8-1_security/

8-2_ota/

建文件夹的命令:
mkdir -p 0-0_tools 1-0_gpio 1-1_clock 1-2_irq 1-3_cpu-architecture 2-0_uart 2-1_spi 2-2_i2c 2-3_pwm 2-4_adc-dac 2-5_timer 3-0_bootloader 3-1_device-tree 4-0_rtos 4-1_linux-kernel 4-2_filesystem 5-0_can 5-1_lin 5-2_rs232-rs485 5-3_modbus 5-4_ethernet 6-0_usb 6-1_wifi 6-2_bluetooth 6-3_zigbee 6-4_lora 7-0_qt 7-1_embedded-database 7-2_ai-frameworks 8-0_low-power 8-1_security 8-2_ota

基本上包含了当前行业对嵌入式软件工程师的技能要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值