u-boot 学习笔记
u-boot 学习笔记 u-boot分类 1.1. api 1.1.1. api.md 1.2. arch 1.2.1. arm 1.2.1.1. arm.md 1.2.1.2. assembly.md 1.2.2. arch.md 1.3. boot 1.3.1. bootm.md 1.3.2. bootretry.md 1.3.3. bootz.md 1.3.4. image.md 1.4. cmd 1.4.1. cmd.md 1.5. common 1.5.1. autoboot.md 1.5.2. board.md 1.5.3. cli.md 1.5.4. command.md 1.5.5. console.md 1.5.6. dmalloc.md 1.5.7. event.md 1.5.8. export.md 1.5.9. log.md 1.5.10. main.md 1.6. dm 1.6.1. adc.md 1.6.2. button.md 1.6.3. clock.md 1.6.4. core.md 1.6.5. dts.md 1....
05:阅读 roscpp 源码,并用 F12、F5、GDB 进入
05:阅读 roscpp 源码,并用 F12、F5、GDB 进入 ros::init() 摘要:这一章把“能看 ROS 头文件”和“运行时真的进入 ROS 源码”分成两条独立链路。你会准备 ros_debug_ws,构建带 Debug 信息的 libroscpp.so,让业务 ros_ws 链接这份 overlay,再用 ldd、readelf、纯 GDB 和 VS Code F5 逐层证明调试链路正确。 @[toc] 本章目标完成本章后,你应该能够: 区分 F12 源码导航和 F5/GDB 运行时调试; 知道 ros::init() 声明与实现分别在哪里; 把 ros_comm、roscpp_core、rosconsole、std_msgs、ros_comm_msgs 放入 Debug workspace; 使用 merged devel 构建 Debug roscpp; 理解源码 header、生成 header、系统 header 三种来源; 用 readelf 判断 libroscpp.so 是否包含 Debug 信息; 让业务 workspace -...
04:使用 VS Code Remote-SSH 与 Dev Container 建立 ROS1 开发工作流
04:使用 VS Code Remote-SSH 与 Dev Container 建立 ROS1 开发工作流 摘要:这一章不把 VS Code 当成“装几个插件就结束”。我们会先确定 IDE 到底运行在哪一层,再建立两套互补工作流:Remote-SSH Host 负责日常编辑、Git、Docker 和 Host→Container GDB;Dev Container 负责最准确的 ROS1 C++ IntelliSense、/opt/ros/noetic 浏览和 Container 内调试。 @[toc] 本章目标完成本章后,你应该能够: 解释 Windows VS Code、Remote-SSH Host、Docker Container 三层关系; 知道 VS Code Extension Host 在不同模式下运行在哪里; 会使用 ROS1 Container Bash Terminal Profile; 会使用 Container Tools 查看 Container 文件; 会 Reopen in Container,并理解它与普通 docker exec 的...
03:让 Node 真正通信——Topic、Parameter、日志与 roslaunch
03:让 Node 真正通信——Topic、Parameter、日志与 roslaunch 摘要:这一章把上一章“已经编译好的两个 ELF”真正放进 ROS1 运行时。你会先手工启动 roscore、Publisher 和 Subscriber,再用 rosnode、rostopic、rosparam 观察系统,最后把多终端操作收敛成一个 hello.launch。 @[toc] 本章目标完成本章后,你应该能够: 理解 roscore、ROS Master、Parameter Server、rosout 的关系; 会使用 rosrun 启动单个 Node; 会使用 rosnode list/info 查看 Node; 会使用 rostopic list/info/echo/hz 查看 Topic; 理解 Topic 数据为什么不是由 Master 转发; 理解 private parameter ~publish_rate; 会使用 roslaunch 一次启动多个 Node; 会区分终端日志、/rosout 和 ~/.ros/log。 为什么先手工开多个终端rosl...
02:创建 catkin Workspace、Package 与第一个 ROS1 C++ Node
02:创建 catkin Workspace、Package 与第一个 ROS1 C++ Node 摘要:这一章从空的 catkin workspace 思维出发,逐步理解 src/、package.xml、CMakeLists.txt、catkin init、catkin config 和 catkin build。然后从最小 main() 开始,一步步写出 hello_node Publisher,并确认它最终被编译成可执行 ELF。 @[toc] 本章目标完成本章后,你应该能够: 解释 workspace、package、Node、CMake target 四个概念的关系; 知道 package.xml 和 CMakeLists.txt 分别负责什么; 会初始化 catkin_tools workspace; 会创建 ROS1 package,并声明 roscpp、std_msgs 依赖; 能读懂 ros::init()、NodeHandle、Publisher、ros::Rate; 会把 .cpp 文件加入 CMake,生成可执行程序; 会用 catkin bui...
01:搭建 ROS1 Noetic Docker 开发环境
01:搭建 ROS1 Noetic Docker 开发环境 摘要:这一章只做一件事——把 Ubuntu 24.04 Host、Docker、Ubuntu 20.04 Focal 和 ROS1 Noetic 组合成一个稳定、可重复的开发环境。完成后,你应该能解释 Dockerfile、Image、Container、Compose、bind mount、sleep infinity 和 /ros_entrypoint.sh 各自负责什么,并能手工启动、进入、停止开发 Container。 @[toc] 本章目标完成本章后,你应该能够: 解释为什么 Host 可以是 Ubuntu 24.04,而 ROS1 Noetic 仍运行在 Ubuntu 20.04 Focal userspace 中; 区分 Dockerfile、Image、Container 和 Compose; 理解为什么整个仓库 bind mount 到 Container 的 /workspace; 理解为什么开发 Container 使用普通用户 dev; 理解 network_mode: host、ini...
rt-thread学习笔记系列
rt-thread学习笔记系列 其他资料 1.1. fatfs 1.1.1. fatfs (个人博客链接) 2. ARM指针寄存器 (个人博客链接) 3. canopennode-rtt推荐,不只可以做从站,也可以承担主站角色 (个人博客链接) (CSDN链接) 4. CAN驱动 (个人博客链接) 5. completion (个人博客链接) 6. condvar (个人博客链接) 7. dataqueue (个人博客链接) 8. DFS (个人博客链接) 9. fal (个人博客链接) 10. fatfs (个人博客链接) 11. FINSH模块 (个人博客链接) 12. I2C驱动 (个人博客链接) 13. IDLE线程 (个人博客链接) 14. IPC (个人博客链接) 15. littlefs (个人博客链接) 16. map文件分析 (个人博客链接) 17. pipe (个人博客链接) 18. PM电源管理 (个人博客链接) 19. ringblock (个人博客链接) 20. ringbuffer (个人博客链接) 21. romfs (个人博客链接) ...
用 Git Submodule + Sparse Checkout 管理 RT-Thread:内核、BSP、第三方库与业务代码分层实践
用 Git Submodule + Sparse Checkout 管理 RT-Thread:内核、BSP、第三方库与业务代码分层实践 摘要:用 Submodule 锁定 RT-Thread 与第三方依赖版本,用 Sparse Checkout 精简工作区,并保持业务代码、构建配置和上游同步边界清晰。 @[toc]嵌入式固件项目维护时间一长,仓库很容易逐渐变成“一份大拷贝”:RTOS 内核、芯片厂商库、BSP、第三方组件和产品业务代码全部堆在一起。短期看最省事,长期却会暴露几个典型问题:依赖来源难追踪、升级时 diff 巨大、多个项目重复保存相同代码、业务代码和基础设施边界越来越模糊。 更适合长期维护的做法,不是简单把目录删掉或拆得越碎越好,而是把三个问题分别交给三个机制处理: Git Submodule:这个依赖来自哪个仓库,产品当前锁定哪个 commit; Git Sparse Checkout:一个已经存在的仓库,在当前工作区实际展开哪些目录; Kconfig / rtconfig.h / SCons / IDE 工程:哪些功能和源文件...
VSCode学习笔记系列
VSCode学习笔记系列 1. Visual Studio Code 安装与更新故障排除:从“拒绝访问”到成功恢复的实践分析 (个人博客链接) (CSDN链接) 2. VS Code + GDB 远程调试中的系统库边界、跳过策略与反汇编排查 (个人博客链接) (CSDN链接) 3. VS Code Codex 登录失败(1455 端口占用)处理说明 (个人博客链接) (CSDN链接) 4. VS Code Remote GDB 调试动态库源码断点灰色:问题分析与解决方案 (个人博客链接) (CSDN链接)
ROS学习笔记系列
ROS学习笔记系列 1. 01:搭建 ROS1 Noetic Docker 开发环境 2. 02:创建 catkin Workspace、Package 与第一个 ROS1 C++ Node (CSDN链接) 3. 03:让 Node 真正通信——Topic、Parameter、日志与 roslaunch 4. 04:使用 VS Code Remote-SSH 与 Dev Container 建立 ROS1 开发工作流 5. 05:阅读 roscpp 源码,并用 F12、F5、GDB 进入 ros::init()








