From 6f68c3e32824e0f9921f0241599ac5ef342d21a0 Mon Sep 17 00:00:00 2001 From: dingwang <2039494153@qq.com> Date: Tue, 22 Jul 2025 17:59:58 +0800 Subject: [PATCH 1/5] =?UTF-8?q?day1=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\347\254\224\350\256\260/day1.md" | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day1.md" diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day1.md" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day1.md" new file mode 100644 index 0000000..a49a993 --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day1.md" @@ -0,0 +1,19 @@ +一:上午学了env环境配置 +env下载:https://download-redirect.rt-thread.org/download/env_release/env-windows-v2.0.0.7z + +RT-Thread源码下载:RT-Thread/rt-thread: RT-Thread is an open source IoT Real-Time Operating System (RTOS) +1.先下载好git和env,用git对RT-Thread源码进行拉取(在git中输入git clone “网址”)。 +2.对env配置 +scons -4j//对文件进行编译 pkgs --upgrade//升级软件包 menuconfig//打开图形化配置界面 +3.运行LVGL示例程序 +打开env命令行,运行menuconfig,然后选择Hardware Drivers Config -> Onboard Periperal Drivers,可以看到有Enable LVGL for LCD和Enable LVGL Demo,全部启用即可: +然后运行pkgs —update更新一下当前工程的包,运行scons -j4编译,编译完成后直接运行qemu即可启动示例demo +下午:git仓库 +git add 暂存 +git commit 提交 +git log 查看历史 +git checkout/git reset 回退 +git branch 创建分支 +git merge 合并分支 +git push/pull 推送/拉取 +git status 查看文件状态 -- Gitee From aed15c2e472ee3aa415faf56dc69bd6328151231 Mon Sep 17 00:00:00 2001 From: dingwang <2039494153@qq.com> Date: Wed, 30 Jul 2025 10:10:14 +0800 Subject: [PATCH 2/5] new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day2/day2.c" modified: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day1.md" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day2.md" --- .../\344\275\234\344\270\232/day2/day2.c" | 67 +++++++++++++++++++ .../\347\254\224\350\256\260/day1.md" | 1 + .../\347\254\224\350\256\260/day2.md" | 44 ++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day2/day2.c" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day2.md" diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day2/day2.c" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day2/day2.c" new file mode 100644 index 0000000..5ace8a4 --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day2/day2.c" @@ -0,0 +1,67 @@ +#include +#include +#include + +#define thread_stack_size 512 +#define thread_tick 5 + +#define THREAD1_PRIORITY 10 // 高优先级 +#define THREAD2_PRIORITY 12 // 中优先级 +#define MAIN_THREAD_PRIORITY 15 // 低优先级(main 线程) + +void thread1_entry(void *param) +{ + while (1) + { + rt_kprintf(">>> this is HIGH priority thread1\n"); + rt_thread_mdelay(500); + } +} + +void thread2_entry(void *param) +{ + while (1) + { + rt_kprintf(" >>> this is MEDIUM priority thread2\n"); + rt_thread_mdelay(500); + } +} + +int main(void) +{ + rt_thread_t thread1 = RT_NULL; + rt_thread_t thread2 = RT_NULL; + + // 创建高优先级线程 thread1 + thread1 = rt_thread_create("th1", + thread1_entry, + RT_NULL, + thread_stack_size, + THREAD1_PRIORITY, // 优先级 10 + thread_tick); + // 创建中优先级线程 thread2 + thread2 = rt_thread_create("th2", + thread2_entry, + RT_NULL, + thread_stack_size, + THREAD2_PRIORITY, // 优先级 12 + thread_tick); + + if (thread1 != RT_NULL) + rt_thread_startup(thread1); + + if (thread2 != RT_NULL) + rt_thread_startup(thread2); + + // 主线程降低优先级以体现对比 + rt_thread_t main_thread = rt_thread_self(); + rt_thread_set_priority(main_thread, MAIN_THREAD_PRIORITY); // 设为低优先级 + + while (1) + { + rt_kprintf(" >>> this is LOW priority main thread\n"); + rt_thread_mdelay(500); + } + + return RT_EOK; +} \ No newline at end of file diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day1.md" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day1.md" index a49a993..ec4bab3 100644 --- "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day1.md" +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day1.md" @@ -17,3 +17,4 @@ git branch 创建分支 git merge 合并分支 git push/pull 推送/拉取 git status 查看文件状态 + diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day2.md" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day2.md" new file mode 100644 index 0000000..6bc902c --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day2.md" @@ -0,0 +1,44 @@ +1.资源包安装与环境配置 +安装资源包: +部署 STM32F407-ATK-Explorer 开发资源包(含驱动、BSP支持包)。 +配置 QEMU 仿真环境(用于无硬件调试)。 +2.概念: + 临界区(Critical Section)定义:进程内访问共享资源的代码段,需通过关中断/信号量保护; + 线程状态机(就绪→运行→阻塞→挂起); +RT-Thread启动流程 +struct rt_thread { + void (*entry)(void*); // 入口函数指针 + void* parameter; // 传入参数 + rt_uint8_t* stack_addr; // 栈起始地址(静态分配时需显式指定) + rt_uint32_t stack_size; // 栈大小(单位:字节) + void* sp; // 栈顶指针(由rt_hw_stack_init()初始化) + rt_uint8_t init_priority; // 初始优先级(0最高) + rt_tick_t init_tick; // 时间片长度(tick数) + // ... 其他状态字段 +}; + 内核开发指令: +LDR 从内存加载数据至寄存器 +STR 寄存器值存入内存 +ADD 寄存器算术运算 +BL 带链接跳转(保存返回地址) +PUSH 寄存器入栈 + 线程 + 线程本质:可被调度的执行流,其运行状态由线程控制块(TCB) 维护。 + 线程创建双模式: +// 静态创建(栈内存由用户预分配) +rt_err_t rt_thread_init(rt_thread_t thread, + const char* name, + void (*entry)(void*), + void* parameter, + void* stack_start, + rt_uint32_t stack_size, + rt_uint8_t priority, + rt_uint32_t tick); + +// 动态创建(内核自动分配TCB及栈) +rt_thread_t rt_thread_create(const char* name, + void (*entry)(void*), + void* parameter, + rt_uint32_t stack_size, + rt_uint8_t priority, + rt_uint32_t tick); \ No newline at end of file -- Gitee From a328d1908945fd2e9aea9362f93729d061310655 Mon Sep 17 00:00:00 2001 From: dingwang <2039494153@qq.com> Date: Wed, 30 Jul 2025 11:58:40 +0800 Subject: [PATCH 3/5] new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/event.c" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/mailbox.c" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/msgqueue.c" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/mutex.c" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/sem.c" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/signal.c" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day3.md" --- .../\344\275\234\344\270\232/day3/event.c" | 65 +++++++++++++++ .../\344\275\234\344\270\232/day3/mailbox.c" | 62 ++++++++++++++ .../\344\275\234\344\270\232/day3/msgqueue.c" | 70 ++++++++++++++++ .../\344\275\234\344\270\232/day3/mutex.c" | 53 ++++++++++++ .../\344\275\234\344\270\232/day3/sem.c" | 60 ++++++++++++++ .../\344\275\234\344\270\232/day3/signal.c" | 63 ++++++++++++++ .../\347\254\224\350\256\260/day3.md" | 82 +++++++++++++++++++ 7 files changed, 455 insertions(+) create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/event.c" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/mailbox.c" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/msgqueue.c" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/mutex.c" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/sem.c" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/signal.c" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day3.md" diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/event.c" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/event.c" new file mode 100644 index 0000000..2de6b19 --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/event.c" @@ -0,0 +1,65 @@ +// mailbox.c +#include + +#define THREAD_PRIORITY 20 +#define THREAD_STACK_SIZE 512 +#define THREAD_TIMESLICE 5 + +static rt_event_t event = RT_NULL; +#define EVT_START 0x01 +#define EVT_DONE 0x02 + +// 任务线程(等待事件) +static void worker_entry(void *parameter) +{ + rt_uint32_t recved; + + while (1) + { + // 等待启动事件 + if (rt_event_recv(event, EVT_START, RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, + RT_WAITING_FOREVER, &recved) == RT_EOK) + { + rt_kprintf("Worker: Task started...\n"); + rt_thread_mdelay(500); + rt_kprintf("Worker: Task done, sending EVT_DONE\n"); + rt_event_send(event, EVT_DONE); // 通知完成 + } + } +} + +// 控制线程(触发事件) +static void ctrl_entry(void *parameter) +{ + while (1) + { + rt_kprintf("Ctrl: Sending EVT_START\n"); + rt_event_send(event, EVT_START); + rt_thread_mdelay(2000); + } +} + +int event_demo(void) +{ + rt_thread_t tid1, tid2; + + event = rt_event_create("ev", RT_IPC_FLAG_FIFO); + if (event == RT_NULL) + { + rt_kprintf("Failed to create event!\n"); + return -1; + } + + tid1 = rt_thread_create("worker", worker_entry, RT_NULL, + THREAD_STACK_SIZE, THREAD_PRIORITY - 1, THREAD_TIMESLICE); + if (tid1 != RT_NULL) + rt_thread_startup(tid1); + + tid2 = rt_thread_create("ctrl", ctrl_entry, RT_NULL, + THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); + if (tid2 != RT_NULL) + rt_thread_startup(tid2); + + return 0; +} +INIT_APP_EXPORT(event_demo); \ No newline at end of file diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/mailbox.c" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/mailbox.c" new file mode 100644 index 0000000..6bea08d --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/mailbox.c" @@ -0,0 +1,62 @@ +// mailbox.c +#include + +#define THREAD_PRIORITY 20 +#define THREAD_STACK_SIZE 512 +#define THREAD_TIMESLICE 5 + +static rt_mb_t mb = RT_NULL; + +// 发送线程 +static void sender_entry(void *parameter) +{ + rt_uint32_t data; + while (1) + { + data = rt_tick_get(); // 用 tick 作为数据 + rt_kprintf("Sender: Sending data %d\n", data); + if (rt_mb_send(mb, (rt_uint32_t)data) != RT_EOK) + { + rt_kprintf("Sender: Mailbox full!\n"); + } + rt_thread_mdelay(1000); + } +} + +// 接收线程 +static void receiver_entry(void *parameter) +{ + rt_uint32_t data; + while (1) + { + if (rt_mb_recv(mb, &data, RT_WAITING_FOREVER) == RT_EOK) + { + rt_kprintf("Receiver: Received data %d\n", data); + } + } +} + +int mailbox_demo(void) +{ + rt_thread_t tid1, tid2; + + mb = rt_mb_create("mbx", 4, RT_IPC_FLAG_FIFO); // 邮箱容量 4 + if (mb == RT_NULL) + { + rt_kprintf("Failed to create mailbox!\n"); + return -1; + } + + tid1 = rt_thread_create("sender", sender_entry, RT_NULL, + THREAD_STACK_SIZE, THREAD_PRIORITY - 1, THREAD_TIMESLICE); + if (tid1 != RT_NULL) + rt_thread_startup(tid1); + + tid2 = rt_thread_create("receiver", receiver_entry, RT_NULL, + THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); + if (tid2 != RT_NULL) + rt_thread_startup(tid2); + + return 0; +} +INIT_APP_EXPORT(mailbox_demo); \ No newline at end of file diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/msgqueue.c" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/msgqueue.c" new file mode 100644 index 0000000..24bb527 --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/msgqueue.c" @@ -0,0 +1,70 @@ +// msgqueue.c +#include + +#define THREAD_PRIORITY 20 +#define THREAD_STACK_SIZE 1024 +#define THREAD_TIMESLICE 5 + +struct msg_data +{ + rt_uint32_t id; + char str[32]; +}; + +static rt_mq_t mq = RT_NULL; + +// 发送线程 +static void sender_entry(void *parameter) +{ + struct msg_data msg; + rt_uint32_t id = 0; + while (1) + { + msg.id = id++; + rt_sprintf(msg.str, "Hello-%d", msg.id); + rt_kprintf("Sender: Sending message ID=%d\n", msg.id); + if (rt_mq_send(mq, &msg, sizeof(struct msg_data)) != RT_EOK) + { + rt_kprintf("Sender: Message queue full!\n"); + } + rt_thread_mdelay(1000); + } +} + +// 接收线程 +static void receiver_entry(void *parameter) +{ + struct msg_data msg; + while (1) + { + if (rt_mq_recv(mq, &msg, sizeof(struct msg_data), RT_WAITING_FOREVER) == RT_EOK) + { + rt_kprintf("Receiver: Got ID=%d, str=%s\n", msg.id, msg.str); + } + } +} + +int msgqueue_demo(void) +{ + rt_thread_t tid1, tid2; + + mq = rt_mq_create("mq", sizeof(struct msg_data), 4, RT_IPC_FLAG_FIFO); + if (mq == RT_NULL) + { + rt_kprintf("Failed to create message queue!\n"); + return -1; + } + + tid1 = rt_thread_create("sender", sender_entry, RT_NULL, + THREAD_STACK_SIZE, THREAD_PRIORITY - 1, THREAD_TIMESLICE); + if (tid1 != RT_NULL) + rt_thread_startup(tid1); + + tid2 = rt_thread_create("receiver", receiver_entry, RT_NULL, + THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); + if (tid2 != RT_NULL) + rt_thread_startup(tid2); + + return 0; +} +INIT_APP_EXPORT(msgqueue_demo); \ No newline at end of file diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/mutex.c" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/mutex.c" new file mode 100644 index 0000000..7d7aa73 --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/mutex.c" @@ -0,0 +1,53 @@ +// mutex.c +#include + +#define THREAD_PRIORITY 20 +#define THREAD_STACK_SIZE 512 +#define THREAD_TIMESLICE 5 + +static rt_mutex_t mutex = RT_NULL; +static int shared_counter = 0; + +// 线程入口函数 +static void thread_entry(void *parameter) +{ + char *name = (char *)parameter; + while (1) + { + // 获取互斥量 + if (rt_mutex_take(mutex, RT_WAITING_FOREVER) == RT_EOK) + { + rt_kprintf("%s: Counter = %d\n", name, shared_counter); + shared_counter++; + rt_thread_mdelay(100); // 模拟临界区操作 + rt_mutex_release(mutex); // 释放 + } + rt_thread_mdelay(50); // 非临界区 + } +} + +int mutex_demo(void) +{ + rt_thread_t tid1, tid2; + + // 创建互斥量 + mutex = rt_mutex_create("mtx", RT_IPC_FLAG_FIFO); + if (mutex == RT_NULL) + { + rt_kprintf("Failed to create mutex!\n"); + return -1; + } + + tid1 = rt_thread_create("thread1", thread_entry, "T1", + THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); + if (tid1 != RT_NULL) + rt_thread_startup(tid1); + + tid2 = rt_thread_create("thread2", thread_entry, "T2", + THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); + if (tid2 != RT_NULL) + rt_thread_startup(tid2); + + return 0; +} +INIT_APP_EXPORT(mutex_demo); \ No newline at end of file diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/sem.c" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/sem.c" new file mode 100644 index 0000000..b17257d --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/sem.c" @@ -0,0 +1,60 @@ +// sem.c +#include + +#define THREAD_PRIORITY 20 +#define THREAD_STACK_SIZE 512 +#define THREAD_TIMESLICE 5 + +static rt_sem_t sem = RT_NULL; // 信号量 + +// 生产者线程 +static void producer_entry(void *parameter) +{ + while (1) + { + rt_thread_mdelay(1000); + rt_kprintf("Producer: Posting semaphore\n"); + rt_sem_release(sem); // 释放信号量 + } +} + +// 消费者线程 +static void consumer_entry(void *parameter) +{ + while (1) + { + // 等待信号量 + if (rt_sem_take(sem, RT_WAITING_FOREVER) == RT_EOK) + { + rt_kprintf("Consumer: Got semaphore, processing data...\n"); + } + } +} + +int sem_demo(void) +{ + rt_thread_t tid1, tid2; + + // 创建信号量 + sem = rt_sem_create("sem1", 0, RT_IPC_FLAG_FIFO); + if (sem == RT_NULL) + { + rt_kprintf("Failed to create semaphore!\n"); + return -1; + } + + // 创建生产者线程 + tid1 = rt_thread_create("producer", producer_entry, RT_NULL, + THREAD_STACK_SIZE, THREAD_PRIORITY - 1, THREAD_TIMESLICE); + if (tid1 != RT_NULL) + rt_thread_startup(tid1); + + // 创建消费者线程 + tid2 = rt_thread_create("consumer", consumer_entry, RT_NULL, + THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); + if (tid2 != RT_NULL) + rt_thread_startup(tid2); + + return 0; +} +INIT_APP_EXPORT(sem_demo); \ No newline at end of file diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/signal.c" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/signal.c" new file mode 100644 index 0000000..f90a278 --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day3/signal.c" @@ -0,0 +1,63 @@ +// signal.c +#include +#include + +#define THREAD_PRIORITY 20 +#define THREAD_STACK_SIZE 1024 +#define THREAD_TIMESLICE 5 + +static rt_thread_t sig_thread = RT_NULL; + +// 信号处理函数 +void signal_handler(int sig) +{ + rt_kprintf("Signal %d received in thread: %s\n", sig, rt_thread_self()->name); +} + +// 信号接收线程 +static void sig_entry(void *parameter) +{ + rt_kprintf("Signal thread started, PID: %d\n", getpid()); + + // 注册信号处理函数 + signal(SIGUSR1, signal_handler); + + // 无限等待信号(实际由系统调度) + while (1) + { + rt_thread_mdelay(1000); + } +} + +// 发送信号的线程 +static void sender_entry(void *parameter) +{ + while (1) + { + rt_thread_mdelay(3000); + rt_kprintf("Sender: Sending SIGUSR1 to thread %s\n", sig_thread->name); + pthread_kill(sig_thread->tid, SIGUSR1); + } +} + +int signal_demo(void) +{ + rt_thread_t tid1, tid2; + + // 创建信号接收线程 + sig_thread = rt_thread_create("sig_recv", sig_entry, RT_NULL, + THREAD_STACK_SIZE, THREAD_PRIORITY - 1, THREAD_TIMESLICE); + if (sig_thread != RT_NULL) + { + rt_thread_startup(sig_thread); + } + + // 创建发送线程 + tid2 = rt_thread_create("sig_send", sender_entry, RT_NULL, + THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); + if (tid2 != RT_NULL) + rt_thread_startup(tid2); + + return 0; +} +INIT_APP_EXPORT(signal_demo); \ No newline at end of file diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day3.md" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day3.md" new file mode 100644 index 0000000..4efd4d7 --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day3.md" @@ -0,0 +1,82 @@ +定时器链表操作机制 +定时器系统通过周期性中断在固定时间间隔内轮询检查所有线程的定时器状态。每个线程维护一个独立的线程定时器结构,记录其累积运行时间。当某线程的运行时间超过预设阈值时,系统将触发超时处理函数。为高效管理这些定时器,系统采用双向链表组织所有线程定时器:链表头部指向活跃定时器的首节点,每个节点包含线程控制块指针、剩余时间计数值及链表指针。定时器检查时,从链表头开始遍历,逐个递减计数值并判断超时条件,确保检查操作的时间复杂度为O(n),同时支持动态添加或移除定时器节点。 + +线程间通信(IPC)机制 +线程间通信的核心作用在于实现线程同步与数据交换,具体包括: + +互斥操作:通过关中断或同步原语确保临界区访问的排他性。 +休眠-唤醒机制:利用等待队列实现线程阻塞与唤醒。 +关键约束: +全局变量不可直接用作IPC媒介,因其无法解决竞态条件、缓存一致性及原子性问题,易导致数据损坏或逻辑错误。必须采用内核提供的同步原语保障通信可靠性。 + +通信机制一:消息队列 +消息队列由固定数量的消息块组成,每个消息块存储固定长度的数据。初始化时需指定消息块数量及单个消息块大小。 + +写操作(发送消息): +有空闲空间:立即写入,返回成功。 +无空闲空间: +若线程选择阻塞:将线程从就绪队列移除,加入队列的发送等待链表(Send List),并启动超时定时器;唤醒条件为: +其他线程执行读操作释放空间; +定时器超时,返回错误码。 +若线程选择非阻塞:直接返回错误码。 +读操作(接收消息): +有可用数据:立即读取,返回成功。 +无可用数据: +若线程选择阻塞:将线程从就绪队列移除,加入队列的接收等待链表(Receive List),并启动超时定时器;唤醒条件为: +其他线程执行写操作填入数据; +定时器超时,返回错误码。 +若线程选择非阻塞:直接返回错误码。 +唤醒机制: +队列内部维护两个独立等待链表(Send List 和 Receive List)。当数据写入时,系统遍历Receive List唤醒首个等待线程;当数据读出时,遍历Send List唤醒首个等待线程。多线程竞争时,支持FIFO(先入先出)或优先级排序策略。数据存储遵循"写入队尾,读取队首"原则,确保有序性。 + +通信机制二:邮箱 +邮箱专为高效传递小规模数据(通常为整型值)设计,结合环形缓冲区、等待链表及超时定时器实现。 + +读操作: +有数据:直接读取缓冲区首个值,返回成功。 +无数据: +若线程选择阻塞:将线程加入邮箱的接收等待链表,并启动超时定时器;唤醒条件为: +其他线程写入数据; +定时器超时,返回错误码。 +若线程选择非阻塞:直接返回错误码。 +写操作: +有空位:直接写入环形缓冲区,返回成功。 +无空位: +若线程选择阻塞:将线程加入邮箱的发送等待链表,并启动超时定时器;唤醒条件为: +其他线程读取数据释放空间; +定时器超时,返回错误码。 +若线程选择非阻塞:直接返回错误码。 +典型实现中,邮箱缓冲区大小固定(如5个unsigned long槽位),通过环形索引管理数据存取,避免链表操作开销,提升小数据传递效率。 + +信号量(Semaphore) +信号量用于抽象化CPU或硬件资源的可用数量,其核心结构包含计数值(value)及等待线程链表。 + +获取资源(P操作): +value > 0:立即递减值,线程继续执行。 +value = 0: +若线程选择阻塞:从就绪队列移除,加入信号量等待链表,并启动超时定时器;唤醒条件为: +其他线程释放资源(value > 0); +定时器超时,返回错误码。 +若线程选择非阻塞:直接返回错误码。 +释放资源(V操作): +递增value,若等待链表非空则唤醒首个线程。 +局限性: + +任意线程均可执行V操作,存在资源误释放风险; +可能引发优先级反转问题(高优先级线程因等待低优先级线程持有的资源而阻塞)。 +互斥量(Mutex) +互斥量是专为互斥访问设计的特殊信号量,核心改进在于: + +优先级继承机制:当高优先级线程等待互斥量时,持有者线程优先级临时提升至等待者优先级,避免优先级反转;释放后恢复原优先级。 +所有权约束:仅持有互斥量的线程可执行释放操作,防止误释放。 +递归持有支持:同一线程可多次获取互斥量,内部通过持有计数(hold)跟踪嵌套深度,需等量释放。 +结构体包含关键字段:value(资源状态)、owner(持有线程指针)、original_priority(持有者原始优先级)、hold(持有计数)。 + +事件组(Event Group) +事件组用于实现"等待多个事件"的同步模式,与前述机制的区别在于: + +队列:传递任意大小数据块,适用于大数据传输。 +邮箱:传递固定长度整型数据,适用于小数据高效传输。 +信号量:表示资源实例数量,不携带数据。 +互斥量:专为互斥访问优化,具备优先级继承和所有权机制。 +事件组:通过位掩码聚合多个事件标志,线程可等待特定组合事件(如"事件A与事件B同时发生"或"事件A或事件B任一发生"),实现复杂同步场景。 \ No newline at end of file -- Gitee From d13b70970ae6371aa5ad934139763308ec881d7c Mon Sep 17 00:00:00 2001 From: dingwang <2039494153@qq.com> Date: Thu, 31 Jul 2025 17:07:55 +0800 Subject: [PATCH 4/5] new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/drv_vir.c" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/drv_vir.h" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/main.c" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/vir.c" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/vir.h" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day4.md" --- .../\344\275\234\344\270\232/day4/drv_vir.c" | 85 +++++++++++ .../\344\275\234\344\270\232/day4/drv_vir.h" | 26 ++++ .../\344\275\234\344\270\232/day4/main.c" | 29 ++++ .../\344\275\234\344\270\232/day4/vir.c" | 143 ++++++++++++++++++ .../\344\275\234\344\270\232/day4/vir.h" | 46 ++++++ .../\347\254\224\350\256\260/day4.md" | 61 ++++++++ 6 files changed, 390 insertions(+) create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/drv_vir.c" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/drv_vir.h" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/main.c" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/vir.c" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/vir.h" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day4.md" diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/drv_vir.c" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/drv_vir.c" new file mode 100644 index 0000000..a54da39 --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/drv_vir.c" @@ -0,0 +1,85 @@ +#include + +#if defined(RT_USING_VIR) + +/* 设备实例 */ +static struct vir_test vir_dev; + +/** + * @brief 打印设备信息 + * @param device 设备句柄 + * @param str 要打印的字符串 + */ +static void printfinfo(struct rt_device *device, rt_uint8_t *str) +{ + if (str != RT_NULL) + { + rt_kprintf("vir info: %s\n", str); + } +} + +/** + * @brief 设置设备值 + * @param device 设备句柄 + * @param val 要设置的值 + */ +static void vir_set_val(struct rt_device *device, rt_uint32_t val) +{ + if (device != RT_NULL) + { + struct vir_test *dev = (struct vir_test *)device; + dev->val = val; + } +} + +/** + * @brief 获取设备值 + * @param device 设备句柄 + * @param val 值输出指针 + */ +static void vir_get_val(struct rt_device *device, rt_uint32_t *val) +{ + if (device != RT_NULL && val != RT_NULL) + { + struct vir_test *dev = (struct vir_test *)device; + *val = dev->val; + } +} + +/* 虚拟设备操作函数表 */ +static const struct rt_virt_ops ops = + { + .printinfo = printfinfo, + .set_val = vir_set_val, + .get_val = vir_get_val, +}; + +/** + * @brief 虚拟设备初始化函数 + * @return 初始化结果 + */ +static int vir_init(void) +{ + rt_err_t result; + + /* 初始化设备成员 */ + vir_dev.val = 0; + vir_dev.info = "test_vir"; + + /* 注册虚拟设备 */ + result = rt_hw_virt_register(&vir_dev.parent, + "vir", + &ops, + (void *)vir_dev.info); + + if (result != RT_EOK) + { + rt_kprintf("Failed to register virtual device: %d\n", result); + return -1; + } + + return 0; +} +INIT_APP_EXPORT(vir_init); + +#endif /* RT_USING_VIR */ \ No newline at end of file diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/drv_vir.h" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/drv_vir.h" new file mode 100644 index 0000000..c08f9da --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/drv_vir.h" @@ -0,0 +1,26 @@ +#ifndef __DRV_VIR_H__ +#define __DRV_VIR_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + + /** + * @brief 虚拟测试设备结构体 + */ + struct vir_test + { + struct rt_virt_device parent; /**< 继承虚拟设备基类 */ + rt_uint32_t val; /**< 设备值 */ + char *info; /**< 设备信息字符串 */ + }; + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_VIR_H__ */ \ No newline at end of file diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/main.c" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/main.c" new file mode 100644 index 0000000..fed426e --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/main.c" @@ -0,0 +1,29 @@ + +#include +#include +#include +#ifndef RT_USING_NANO +#include +#endif /* RT_USING_NANO */ + +int main(void) +{ + // IO + rt_device_t vir = rt_device_find("vir"); + if (vir == RT_NULL) + { + rt_kprintf("find vir dev err\n"); + return -RT_ERROR; + } + rt_uint32_t val = 1314; + rt_uint32_t ret = 0; + rt_device_open(vir, RT_DEVICE_FLAG_RDWR); + rt_device_write(vir, 0, &val, 4); + rt_device_read(vir, 0, &ret, 4); + rt_kprintf("ret :%d\n", ret); + rt_device_close(vir); + val = 333; + rt_vir_wirte((rt_vir_device_t)vir, val); + rt_vir_read((rt_vir_device_t)vir, &ret); + rt_kprintf("ret :%d\n", ret); +} \ No newline at end of file diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/vir.c" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/vir.c" new file mode 100644 index 0000000..a02443b --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/vir.c" @@ -0,0 +1,143 @@ +#include +#include + +#if defined(RT_USING_VIR) + +/* 设备操作结构体定义 */ +struct rt_vir_device_ops +{ + rt_err_t (*vir_get_val)(rt_device_t dev, rt_uint32_t *val); + rt_err_t (*vir_set_val)(rt_device_t dev, rt_uint32_t val); +}; + +/* 虚拟设备结构体 */ +struct rt_vir_device +{ + struct rt_device parent; // 继承自 rt_device + const struct rt_vir_device_ops *ops; // 操作函数指针 + const void *user_data; // 用户私有数据 +}; +typedef struct rt_vir_device *rt_vir_device_t; + +/* 内部初始化接口 */ +static rt_err_t _vir_init(rt_device_t dev) +{ + rt_kprintf("Virtual device init\n"); + return RT_EOK; +} + +/* 打开设备 */ +static rt_err_t _vir_open(rt_device_t dev, rt_uint16_t oflag) +{ + rt_kprintf("Virtual device open\n"); + return RT_EOK; +} + +/* 关闭设备 */ +static rt_err_t _vir_close(rt_device_t dev) +{ + rt_kprintf("Virtual device close\n"); + return RT_EOK; +} + +/* 读取数据 */ +static rt_ssize_t _vir_read(rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size) +{ + rt_vir_device_t vir_dev = (rt_vir_device_t)dev; + + if (vir_dev->ops && vir_dev->ops->vir_get_val && buffer) + { + rt_uint32_t value = 0; + rt_err_t result = vir_dev->ops->vir_get_val(dev, &value); + if (result == RT_EOK) + { + *(rt_uint32_t *)buffer = value; + return sizeof(rt_uint32_t); + } + } + + return -RT_ERROR; +} + +/* 写入数据 */ +static rt_ssize_t _vir_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size) +{ + rt_vir_device_t vir_dev = (rt_vir_device_t)dev; + + if (vir_dev->ops && vir_dev->ops->vir_set_val && buffer) + { + rt_uint32_t value = *(const rt_uint32_t *)buffer; + rt_err_t result = vir_dev->ops->vir_set_val(dev, value); + if (result == RT_EOK) + { + return sizeof(rt_uint32_t); + } + } + + return -RT_ERROR; +} + +/* 控制命令处理 */ +static rt_err_t _vir_control(rt_device_t dev, int cmd, void *args) +{ + rt_kprintf("Virtual device control, cmd: %d\n", cmd); + return RT_EOK; +} + +/* 注册虚拟设备 */ +rt_err_t rt_hw_vir_register(rt_vir_device_t device, + const char *name, + const struct rt_vir_device_ops *ops, + const void *user_data) +{ + RT_ASSERT(device != RT_NULL); + RT_ASSERT(name != RT_NULL); + RT_ASSERT(ops != RT_NULL); + + device->ops = ops; + device->user_data = user_data; + + /* 初始化父类设备结构 */ + device->parent.type = RT_Device_Class_Miscellaneous; + device->parent.init = _vir_init; + device->parent.open = _vir_open; + device->parent.close = _vir_close; + device->parent.read = _vir_read; + device->parent.write = _vir_write; + device->parent.control = _vir_control; + + return rt_device_register(&device->parent, name, RT_DEVICE_FLAG_RDWR); +} + +/* 提供给外部使用的读写接口 */ + +/* 读取值 */ +rt_err_t rt_vir_read(rt_vir_device_t device, rt_uint32_t *val) +{ + RT_ASSERT(device != RT_NULL); + RT_ASSERT(val != RT_NULL); + RT_ASSERT(device->ops != RT_NULL); + + if (device->ops->vir_get_val) + { + return device->ops->vir_get_val((rt_device_t)device, val); + } + + return -RT_ERROR; +} + +/* 写入值 */ +rt_err_t rt_vir_write(rt_vir_device_t device, rt_uint32_t val) +{ + RT_ASSERT(device != RT_NULL); + RT_ASSERT(device->ops != RT_NULL); + + if (device->ops->vir_set_val) + { + return device->ops->vir_set_val((rt_device_t)device, val); + } + + return -RT_ERROR; +} + +#endif /* RT_USING_VIR */ \ No newline at end of file diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/vir.h" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/vir.h" new file mode 100644 index 0000000..3332d9c --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day4/vir.h" @@ -0,0 +1,46 @@ + +#ifndef __VIR_H__ +#define __VIR_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +#if defined(RT_USING_VIR) + + /* 虚拟设备操作函数集合 */ + struct rt_vir_device_ops + { + rt_err_t (*vir_get_val)(rt_device_t dev, rt_uint32_t *val); /* 读取值 */ + rt_err_t (*vir_set_val)(rt_device_t dev, rt_uint32_t val); /* 设置值 */ + }; + + /* 虚拟设备结构体 */ + struct rt_vir_device + { + struct rt_device parent; /* 继承自标准设备结构 */ + const struct rt_vir_device_ops *ops; /* 设备操作函数指针 */ + const void *user_data; /* 用户私有数据 */ + }; + typedef struct rt_vir_device *rt_vir_device_t; + + rt_err_t rt_hw_vir_register(rt_vir_device_t device, + const char *name, + const struct rt_vir_device_ops *ops, + const void *user_data); + + rt_err_t rt_vir_read(rt_vir_device_t device, rt_uint32_t *val); + + rt_err_t rt_vir_write(rt_vir_device_t device, rt_uint32_t val); + +#endif /* RT_USING_VIR */ + +#ifdef __cplusplus +} +#endif + +#endif /* __device_H__ */ \ No newline at end of file diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day4.md" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day4.md" new file mode 100644 index 0000000..4309e31 --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day4.md" @@ -0,0 +1,61 @@ +I/O 设备模型 +RT-Thread 提供了一套简单的 I/O 设备模型框架,它位于硬件和应用程序之间,共分成三层,从上到下分别是 I/O 设备管理层、设备驱动框架层、设备驱动层。 +应用程序通过 I/O 设备管理接口获得正确的设备驱动,然后通过这个设备驱动与底层 I/O 硬件设备进行数据(或控制)交互。 + +I/O 设备管理层实现了对设备驱动程序的封装。应用程序通过图中的"I/O设备管理层"提供的标准接口访问底层设备,设备驱动程序的升级、更替不会对上层应用产生影响。这种方式使得设备的硬件操作相关的代码能够独立于应用程序而存在,双方只需关注各自的功能实现,从而降低了代码的耦合性、复杂性,提高了系统的可靠性。 + +设备驱动框架层是对同类硬件设备驱动的抽象,将不同厂家的同类硬件设备驱动中相同的部分抽取出来,将不同部分留出接口,由驱动程序实现。 + +设备驱动层是一组驱使硬件设备工作的程序,实现访问硬件设备的功能。它负责创建和注册 I/O 设备,对于操作逻辑简单的设备,可以不经过设备驱动框架层,直接将设备注册到 I/O 设备管理器中,使用序列图如下图所示,主要有以下 2 点: + +设备驱动根据设备模型定义,创建出具备硬件访问能力的设备实例,将该设备通过 rt_device_register() 接口注册到 I/O 设备管理器中。 + +应用程序通过 rt_device_find() 接口查找到设备,然后使用 I/O 设备管理接口来访问硬件 + +字符设备与块设备的主要区别在于是否支持随机访问: +字符设备:提供连续数据流,通常只能顺序读取,不支持随机访问,按字节/字符进行数据传输。典型例子包括键盘、串口和调制解调器。 + +块设备:支持随机访问,应用程序可直接定位到设备的任意位置读取数据。数据读写必须以块(通常512B)为单位进行。典型例子包括硬盘、软盘、CD-ROM和闪存。 +对设备进行分类管理,使得同一类设备能够使用统一的控制方式。 + +GPIO简介 +芯片上的引脚一般分为 4 类:电源、时钟、控制与 I/O,I/O 口在使用模式上又分为 General Purpose Input Output(通用输入 / 输出),简称 GPIO,与功能复用 I/O(如 SPI/I2C/UART 等)。 + +大多数 MCU 的引脚都不止一个功能。不同引脚内部结构不一样,拥有的功能也不一样。可以通过不同的配置,切换引脚的实际功能。通用 I/O 口主要特性如下: + +可编程控制中断:中断触发模式可配置,一般有 5 种中断触发模式: +上升沿触发:当信号从低电平跳变至高电平时触发中断 +下降沿触发:当信号从高电平跳变至低电平时触发中断 +高电平触发:当信号保持高电平时持续触发中断 +低电平触发:当信号保持低电平时持续触发中断 +双边沿触发:当信号发生任何电平跳变(上升沿或下降沿)时触发中断 +I2C从机应用与驱动开发 +I2C(Inter-Integrated Circuit)由飞利浦公司于1980年代提出,用于连接低速外部设备。 + +I2C总线数据传输格式如下: + + +向从机写数据流程:开始传输后,主设备发送起始位(S),然后发送包含7位从设备地址和写标志位的8位字节数据,释放SDA线等待从设备应答(ACK)。每个字节传输后都需应答,最后以停止位(P)结束传输并释放总线。 + + +向从机读数据流程:主设备发送起始信号(S)和包含7位地址及写标志的字节,等待应答后发送寄存器地址,再次发送起始信号,发送包含读标志的地址,从设备应答后将寄存器值发送给主设备。 + + +I2C从机常用操作包括:向从机特定寄存器写入单字节或多字节数据,从特定寄存器读取单字节或多字节数据。 + +启用I2C驱动(Hardware Drivers Config -> On-chip Peripheral Drivers -> Enable I2C)后,可使用list_device命令查看总线设备注册情况。I2C设备探测软件包(RT-Thread online packages -> peripheral libraries and drivers -> i2c-tools)可用于探测总线上的设备。 +SPI从机与应用开发 +SPI(Serial Peripheral Interface)是一种高速、全双工、同步通信总线,常用于短距离通信,主要应用于EEPROM、FLASH、实时时钟、AD转换器等设备之间。 + +在RT-Thread中,SPI设备分为"SPI总线"和"SPI设备"两类,SPI总线对应SPI控制器,SPI设备对应不同CS连接的从设备。使用前需要先注册SPI总线,再将从设备挂载到总线上。 + +SPI开发流程:注册SPI Device设备 -> 打开SPI Device设备 -> 使用SPI框架API进行数据收发 -> 关闭SPI Device设备 +SPI设备控制API: +rt_device_find() /*根据SPI设备名称查找设备获取设备句柄*/ +rt_spi_configure() /*配置SPI设备*/ +rt_spi_transfer() /*传输一次数据,不需要手动片选,相当于调用rt_spi_transfer_message*/ +rt_spi_send() /*发送一次数据,忽略接收到的数据*/ +rt_spi_recv() /*只接受一次数据*/ +rt_spi_send_then_send() /*连续发送两个缓冲区的数据,中间片选不释放,忽略接收到的数据*/ +rt_spi_send_then_recv() /*先发送后接收,中间片选不释放*/ +rt_spi_transfer_message() /*自定义传输数据,开始发送数据时片选,返回时释放*/ \ No newline at end of file -- Gitee From 829b2dfd615577c2745933fd3d49e3ffcf9384a8 Mon Sep 17 00:00:00 2001 From: dingwang <2039494153@qq.com> Date: Sat, 2 Aug 2025 15:36:47 +0800 Subject: [PATCH 5/5] new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day5/\345\261\217\345\271\225\346\210\252\345\233\276 2025-08-02 144726.png" new file: "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day5.md" --- ...210\252\345\233\276 2025-08-02 144726.png" | Bin 0 -> 180857 bytes .../\347\254\224\350\256\260/day5.md" | 52 ++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day5/\345\261\217\345\271\225\346\210\252\345\233\276 2025-08-02 144726.png" create mode 100644 "2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day5.md" diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day5/\345\261\217\345\271\225\346\210\252\345\233\276 2025-08-02 144726.png" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\344\275\234\344\270\232/day5/\345\261\217\345\271\225\346\210\252\345\233\276 2025-08-02 144726.png" new file mode 100644 index 0000000000000000000000000000000000000000..59fa06b1c09d4de34527974db49e2b115d9be094 GIT binary patch literal 180857 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Ðt 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ö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 T*8^-tz;pRL{2cM@?Fat{ihdgY literal 0 HcmV?d00001 diff --git "a/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day5.md" "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day5.md" new file mode 100644 index 0000000..ccea8ea --- /dev/null +++ "b/2025/\347\254\2546\347\273\204(GD32F527I-EVAL)/\344\270\201\345\223\262\347\277\224/\347\254\224\350\256\260/day5.md" @@ -0,0 +1,52 @@ +# 软件包机制 +软件包是运行于RT-Thread物联网操作系统平台上,面向不同应用领域的软件组件形成一个个软件包,由软件包描述信息,软件包源代码或库文件组成。 +## 软件包安装 +在项目文件夹中启动env并打开menuconfig,并使用`/`功能进行搜索软件包。例如搜索软件包`hello`,可以看到前缀为PKG的是软件包。选中后保存退出。 +保存退出后可以通过控制台打印的语句看到,它使用了`.config`文件,其中保存了所有的软件包索引,该文件会根据云端仓库中的软件包进行更新,添加新的软件包。 +menuconfig配置完保存退出后一般会根据配置自动拉取所需的软件包到项目的`packages`目录下,也可以使用命令`pkgs --update`手动更新拉取。 +如想要最新版本,可使用命令`pkgs --upgrade`可以更新本地的软件包索引 +packages目录下有pkgs.json是给env使用的,SConscript文件是env工具生成的用于递归添加子目录中的SCons脚本,将软件包加入编译。之后就可以直接使用`scons -j`命令进行编译。 + +# Kconfig +C语言项目的裁剪配置本质上通过条件编译和宏的展开来实现的,RT-Thread借助Kconfig这套机制更方便的实现了这一功能。以Windows下Env工具中的使用为例,简述Kconfig在RT-Thread的工作机制。 +![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20250802/d707ef8ca893f0664bed8e79ccb3588f.png.webp) +Kconfig机制包括了Kconfig文件和配置UI界面(如menuconfig,pyconfig等)。Kconfig机制有如下特点: +- Kconfig文件中的配置项会映射至rtconfig.h中 +- Kconfig文件可以随源码分散至各级子目录,便于灵活修改。 +配置生成: +配置menuconfig后,会生成.config文件保存用户选择 +将.config转换为rtconfig.h,供编译系统使用 +注意:rtconfig.h是自动生成文件,不应手动修改,修改后在编译会将被刷掉。 +# Scons +Scons是一个开放源码、以Python语言编码的自动化构建工具,可用来替代make编写复杂的makefile。并且scons是跨平台的,只要scons脚本写的好,可以在Linux和Windows下随意编译。 + +## SCons优点 +SCons 具有以下优点: +Python驱动:完全使用Python编写,构建脚本本身就是Python脚本 +依赖自动检测:智能分析文件依赖关系,避免不必要的重新编译 +跨平台支持:在Windows、Linux、macOS等平台提供一致的构建体验 +构建缓存:支持构建缓存机制,显著提升重复构建速度 +并行构建:原生支持多线程并行编译(如scons -j8命令) +## SCons构建系统结构说明 +SCons使用SConstruct和SConscript文件来组织源码结构并执行构建过程,形成层次化的构建体系: +SConstruct:作为SCons构建系统的主控制脚本,位于项目根目录。每个项目(包括BSP)仅有一个SConstruct文件,它负责初始化构建环境、定义全局构建参数,并作为构建入口点递归调用各子目录中的SConscript文件。 +SConscript:作为子目录构建脚本,通常放置在包含源代码的各个子目录中。一个项目中会有多个SConscript文件,它们继承主SConstruct的构建环境,专注于定义本目录下的具体构建任务。 +# config +定义一组新的配置选项,以下为 RT-Thread 系统中 config 语句的示例 + +```c +config BSP_USING_GPIO # 配置项 + bool "Enable GPIO" # 类型及此项名称 + select RT_USING_PIN # 依赖项,若选择本项也会选中此项。 + default y # 默认值 + help # 帮助信息,注释 + config gpio +``` + +每个 config 菜单项都要有类型定义,变量有5种类型即: +- bool 布尔类型,取值范围为:y/n +- tristate 三态类型,取值范围为y/n/m,代表在内核中有三种状态,一种是不选中,一种是选中直接编译进内核,还有一种是 m 手动添加驱动 +- string 字符串,默认值是一个字符串 +- hex 十六进制,取值范围是一个16进制数,使用方法与整形一致。 +- int 整型,取值范围是一个整形的数,可以使用`range a b`配置取值范围 +通过env选中之后最终可在 rtconfig.h 文件中生成如下两个宏,该文件会在menuconfig配置后重新生成因此不要手动修改其中的内容。而要使用Kconfig配置 \ No newline at end of file -- Gitee