FreeRTOS简单内核实现2 双向链表】的更多相关文章

最近在学着编写一个操作系统的简单内核,需要debug工具,我们这里使用gdb来进行调试,由于虚拟机运行和本机是两个部分,所以使用 gdb 的远程调试技术,这里对 gdb 常见调试以及远程调试方式做一个总结. 远程调试 先对在调试操作系统内核时用到的命令做一个说明(这里省略了一部分makefile的内容): 为了方便调试,将debug所用到的命令做一个简单说明 -- # -s 这个参数指的是启动时开启1234端口等待gdb连接 # -S 是指是启动时不自动开始运行,等待调试器的执行命令 debug…
基于mykernel完成时间片轮询多道进程的简单内核 原创作品转载请注明出处+中科大孟宁老师的linux操作系统分析:https://github.com/mengning/linuxkernel/ 操作系统概述 操作系统中,OS的任务有很多,比如内存管理.文件管理.进程管理等等,而这其中,进程的管理是至关重要的,因为只有实现了进程的管理,才能使得一个操作系统可以处理多种任务,通过进程的切换,可以从逻辑上实现任务的多个进程任务并行操作,使得操作系统可以更高效的服务于应用服务.本实验着重基于lin…
Linux 内核提供一套双向链表的实现,你可以在 include/linux/list.h 中找到.我们以双向链表着手开始介绍 Linux 内核中的数据结构 ,因为这个是在 Linux 内核中使用最为广泛的数据结构,具体你可以 查看 这里. 首先让我们看一下主要的结构体: struct list_head { struct list_head *next, *prev; }; 你可以看到其与常见的结构体实现有显著不同,比如 glib 中所使用到的双向链表实现. struct GList { gp…
学号351 原创作品转载请注明出处 + https://github.com/mengning/linuxkernel/ mykernel简介 mykernel是由孟宁老师建立的一个用于开发您自己的操作系统内核的平台,基于Linux Kernel 3.9.4 source code mykernel的源代码 https://github.com/mengning/mykernel , 你可以按照上面的指南部署到你的操作系统,也可以使用实验楼提供的虚拟机,该虚拟机上已经部署好这个平台,只需按照实验…
一.双向链表list_head Linux内核驱动开发会经常用到Linux内核中经典的双向链表list_head,以及它的拓展接口和宏定义:list_add.list_add_tail.list_del.list_entry.list_for_each等. 在内核源码中,list_head结构体的定义在文件source_code/include/linux/types.h文件中,结构体定义如下: struct list_head { struct list_head *next, *prev;…
#include <stdio.h> #include <stdlib.h> #define container_of(ptr, type, mem)(type *)((unsigned long)ptr -(unsigned long)&((type *)NULL)->mem) struct person { struct person *next; struct person *pre; }; struct boy { struct person p; int a…
模块 通过在HOST上修改linux kernel源代码,重新编译一个vmlinux,然后,通过qemu根据这个bzImage 启动一个vm,进行调试 #cat drivers/char/test.c #include <linux/kernel.h> #include <linux/module.h> #include <linux/sysfs.h> #include <linux/init.h> #include <linux/proc_fs.h&…
在开始具体的学习之前,你应该先了解freeRTOS的编程标准.这能够方便你在接下来的阅读中快速的了解一些内容 的基本信息,并方便记忆.此外,良好的编程风格也是工作效率的保障. 你可以在https://www.freertos.org/FreeRTOS-Coding-Standard-and-Style-Guide.html中找到英文的原文信息. 尽管此前有人翻译过这份文档,但发布时间在很早以前,一些标准已经发生了改变.这里按照此前翻译的思路根据官方文档进行了更新和修订. 编程标准(Coding…
FreeRTOS操作系统最全面使用指南 1 FreeRTOS操作系统功能 作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理.时间管理.信号量.消息队列.内存管理.记录功能等,可基本满足较小系统的需要. FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的.优先级最高的任务先运行.FreeRT0S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使…
前言 后面都是已动态内存任务为例来分析. 注意: 由于当前学习是在linux上跑的freertos,对于freertos底层相关接口,从demo工程来看,都是posix标准相关. 鉴于freertos多用于ARM架构,本教程涉及到硬件接口,作者会分两条路线讲解: posix标准接口. cortex m3/4架构相关接口. 参考: 博文源自李柱明博客:https://www.cnblogs.com/lizhuming/p/16072375.html 本文默认按堆栈向下生长方式讲解. 4.1 任务控…