-
Notifications
You must be signed in to change notification settings - Fork 15
Home
欢迎来到 ZJU-UIUC Meta 战队控制组 Wiki。请使用右侧导航跳转页面 =>
GitHub Wiki 是战队知识传承的重要平台,需要大家共同参与维护。在这里,你不仅仅是一位读者,也应当是一位书写者。
当你构思了一个精巧体系,你应当把你的思路记录下来,以便其他队员理解。即使以后程序迭代,你的代码不再被使用,这些文档依然是宝贵的记录和见证,让大家知道我们如何走到今天。
当你反复尝试,成功安装了一个程序或者库,你应当把你的步骤记录下来。无论是你自己还是其他队员,重新进行这些步骤时,就重新踩一遍那些坑。
即使你对你正在阅读的文档并无了解,只是跟着步骤执行,你也应该把文档源代码打开放在一旁。对于不清楚的地方、需要更新的地方、不适配某一操作系统的地方,你都应当及时更正。当你走完了文档的所有步骤,文档本身也得到了更新。
规则每年变化,技术时常更新,战队人员也在不断更迭。代码、图纸,或许会在某一天被弃用,但你的贡献将被大家永远铭记。请不要吝惜你的笔墨,请将你的知识和见解传承下去。
Wiki 本身是一个 Git 仓库,页面使用 Markdown 书写。
Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(英语:John Gruber)。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。(Wikipedia)
- 克隆 Git 仓库:
https://github.com/Meta-Team/Meta-Embedded.wiki.git
- 使用 Markdown 编辑。
- Git commit, push, 修改生效。
Markdown 教程网上已有众多,例如 Mastering Markdown · GitHub Guides,请根据需求自行查阅学习。
编辑 Markdown 不需要特别的工具,文本编辑器就可编辑。也可使用 VSCode 等编辑器,有许多实用的插件辅助 Markdown 编写、预览,例如 Markdown All in One、Markdown Paste 等。
GitHub Wiki Markdown 的一些注意事项:
- Wiki 页面上方自带标题,因此页面本身不需要标题
- 引用其他页面,可使用以下三种方式(参考 StackOverflow):
-
[Link Text](wiki/WikiPage)
,这种方式文件的相对路径是工程 repo,加上wiki\
才是 Wiki 的 repo,如果不加,则会找不到 page 而跳转到创建 page 的页面。这个方法也可以用于引用工程 repo 中的文件。 -
[[Link Text|WikiPage]]
。 -
[[My Wonderful Wiki Page]]
,该方式会自动连接到wiki/My-Wonderful-Wiki-Page
。
-
此 Wiki 中的文档主要针对目前战队使用的工程 Meta-Embedded 而编写,但其使用范围并不局限于此,可以拓展到其他的嵌入式开发、C/C++ 程序等。
右侧导航 =>
-
嵌入式开发简介
- 嵌入式
- MCU
- STM32F4
- Contex-M4
- 开发板
- 仿真器,ST-Link,J-Link
- GPIO
-
工具链 概念介绍
- 工具链
- 编译器(gcc、clang)
- 交叉编译
- 调试器(gdb、openocd)
- IDE(CLion)
- 自动化工具(Make、CMake)
-
工具链 安装 Mac 或 工具链 安装 Win
- macOS/Windows
- CLion
- ARM-NONE-EABI
- OpenOCD
-
工具链 工程配置
- CLion Configuration
- 编译
- 烧录
-
工具链 CMake 构建系统简介
- CMake
- CMakeLists.txt
- Target
- Include Directories
-
工具链 CMake 进阶配置
- CMake Profile
- Build Type
- CMake Option
-
工具链 调试
- GDB
- OpenOCD
- ST-Link
- CLion Remote Debugging
- 断点
-
远程烧录程序
- Jetson Nano
- SSH Key
-
CLion 实用手册
- 代码重构 Refactor
- 代码整理 Reformat
- 剪切板历史 Paste from History
- Surround With...
- 快速跳转
- Find Usage
- Find Everywhere
-
Shell 终端使用说明
- Shell 终端
- UART(TTL,RX,TX)
- 串口接线
- CP2102 串口模块
- HC05 蓝牙模块
-
Mac 串口工具 minicom 配置
- minicom
- CP2102 串口模块
- HC05 蓝牙模块
-
Win 串口工具 PuTTY 配置
- Putty
- CP2102 串口模块
- HC05 蓝牙模块
-
程序架构演进史
- C++ 类
- 继承
- 封装
- Interface(IF)、Scheduler(SKD)、Logic(LG)、User、Inspector
- Static class
-
ChibiOS 线程编写
- 无限循环的的线程
- 可暂停的线程
- Static Thread(BaseStaticThread)、Dynamic Thread
- 栈空间
-
ChibiOS 事件系统
- 事件 Event
- 事件源 Event Source
- 事件接收者 Event Listener
- 广播事件 Broadcast Event
- 标志 Event Flags
-
ChibiOS 关键区与锁
- 中断 Interrupt、中断请求 IRQ
- 同步 Synchronization
- 关键区 Critical Section
- 锁 Lock
- 系统状态 System State(Thread、ISR、S-Locked、I-Locked)
- chSysLock/chSysUnlock/chSysLockFromISR/chSysUnockFromISR
-
ChibiOS 性能与资源占用
- stats
- CPU 占用
- 进程栈余量
-
常见问题 工具链 编译 调试 嵌入式
- 工具链选择
- CMake 错误、编译错误
- 烧录报错、"OpenOCD init failed"
- 开发板坏了
-
常见问题 代码与架构
- 选用 ChibiOS 的原因
- 选用 C++ 而不是 C 的原因
- 使用多个线程的原因
- 模块化
- 启动自检、启动音
- 参数化
-
常见问题 失去响应
- ChibiOS Halt
-
常见问题 Shell
- 蓝牙连接
- USB 串口模块连接
- 终端无法连接或无响应
- 基础知识
- 基础配置
- 进阶与参考