自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (4)
  • 收藏
  • 关注

原创 ARMV8上实现一个OS ---(8)多核启动和调度

PSCI定义了各种CPU管理的接口,接口格式为X0~X3存放函数调用的参数。然后调用smc指令进入安全世界进行函数处理。处理完成后将结果写入X0,返回到EL1。下边是CPU_ON调用的例子。参数1是功能定义,参数2是CPU的序号,参数3是启动之后执行的函数入口(必须是EL1的物理地址),参数4是函数的参数。DEFINE_PER_CPU(type, name)用于给每个CPU定义一个type类型的name变量。//展开之前的代码//展开之后的代码。

2025-01-06 17:16:09 1255

原创 ARMV8上实现一个OS ---(7)自旋锁

本节开始我们将为操作系统添加一些通用的组件,以方便其他模块编程时使用。到目前为止,我们所有的代码都运行在一个CPU上,其他的CPU都在一个忙等的状态。本节我们将添加一个SMP()系统上必须用到的组件,自旋锁。当多个CPU都需要进行同一资源操作,且此过程必须保持原子性,我们称这段操作为临界区,当处于临界区时,仅有一个CPU可以对此资源进行修改。互斥锁和自旋锁都能解决这个问题,他们的不同点在于互斥锁会让任务进入休眠状态,会发生任务切换。而自旋锁则让CPU处于一个忙等的状态,不会发生任务的切换。

2024-12-31 16:22:47 738

原创 ARMV8上实现一个OS ---(6)调度(RR、FIFO)

上一章节我们为OS添加了一个中断,实现了任务的自动切换,本章节我们将为OS添加调度,并增加两种调度策略。

2024-12-24 23:07:04 764 1

原创 ARMV8上实现一个OS ---(5)自动任务切换(中断)

上一节我们创建了两个任务,实现了手动的任务切换。本节我们将去除函数中的任务切换接口,实现真正意义上的无感切换。要实现操作系统中的无感任务切换通常是让操作系统按照一定的时间间隔去检查系统的就绪队列,从而去做到就绪任务的切换。这个一定的时间间隔通常使用硬件的定时器去是实现,同时能够产生一个中断,去打断正在执行的任务。

2024-12-21 15:31:39 806

原创 ARMV8上实现一个OS ---(4)手动任务切换

本次调试还是遇到了eret返回之后无法正常跳转的问题。该问题的调试和解决都总结在了上一节,感兴趣的可以翻回去看一看。ARMV8上实现一个OS ---(3)启动第一个Task。

2024-12-15 19:18:11 896

原创 ARMV8上实现一个OS ---(3)启动第一个Task

编译的过程遇到了一个链接的问题,这里会提示找不到汇编的这个函数。使用objdump,查看是能够发现该函数的。修改cmake的链接顺序后解决该问题。(需要查下camke的手册找下原因)//原来的链接顺序k_archk_libk_core//修改后的链接顺序k_libk_corek_arch。

2024-12-14 00:11:09 1011

原创 ARMV8上实现一个OS ---(2)从hello World!开始

本章节,我们将使用qemu模拟一个cortex-a57的设备,并在上边输出一个hello类型的输出。开始之前,先了解一下AArch64的一些相关知识。更详细的内容可参照arm发布的手册。

2024-12-11 20:32:21 686

原创 ARMV8上实现一个OS ---(0)前言

正如我们看到的那样,操作系统一般情况下运行于硬件之上,当然也不排除运行在虚拟机软件之上的(哈哈哈,实际最后也是运行在硬件上),由于本菜鸟是一个做嵌入式开发的,所以打算基于ARMV8撸一个学习用的OS,当然我们肯定要借鉴伟大的linux或者其他大佬写的RTOS了。首先从裸奔开始,慢慢实现操作系统的打印功能,任务创建,任务调度,定时器等相关的操作系统组件。我们经常在招聘软件的JD上看到熟悉Linux内存管理,文件系统,驱动开发,熟悉ARM体系结构,balabala~~~~~。

2024-12-10 21:49:12 249

原创 ARMV8上实现一个OS ---(1)环境搭建

最新版本的的qemu需要2.66以上版本的glib,我们需要下载一个最新的glib安装到我们的开发环境上。Tips2:在WIN上安装virtualbox需要在BIOS中允许虚拟化。好了,铁子们,环境搭建完毕。下一节我们将从hello world开始撸操作系统。Tips2:安装ubuntu需要使能virtualbox的。操作系统:virtualbox + Ubuntu 20.04。编译方式:CMake 3.16.3。仿真软件:QEMU 9.1.93。编译器:GCC 9.4.0。安装QEMU所依赖的包。

2024-12-10 21:46:15 345

原创 《嵌入式软件设计方法》--设计原则

设计原则(SOLID)使用各个原则的首字母组成了一个单词:SOLID。SRP:Single Responsibility Principle,单一职责原则;OCP:Open Closed Principle,开闭原则;LSP:Liskov Substitution Principle,里氏替换原则;ISP:Interface Segregation Principle,接口隔离原则;DIP:Dependence Inversion Principle,依赖倒置原则。1. 单一职责原则(SR

2020-08-16 11:09:34 2234

原创 《了不起Markdown》学习笔记1

MarkDown的练习和笔记文档作者:GLF摘要:记录学习笔记过程,同时使用Markdown的格式,记录本次学习的内容。目录:无2.1基本语法2.1.1标题的学习标题使用# + 空格 +标题内容来使用。#的个数表示你要使用的标题是几级2.1.2字体的学习粗体加粗使用双*或者双_对内容进行包裹**加粗内容**__加粗内容__斜体斜体使用单个*或者单个_对内容进行包裹*斜体*_斜体_2.1.3段落与换行Markdown中的段落由一行或者多行文本组成,不同的段落

2020-08-02 15:20:57 1823

原创 WSF操作系统抽象层学习笔记 (五)---事件处理及运行方式

事件处理事件管理会创建一个OS的事件,用于进行WSF无运行需求时任务的阻塞。事件管理结构typedef struct{ uint16_t param; //参数 uint8_t event; //事件值 uint8_t status; //状态值} wsfMsgHdr_t;设置事件void WsfSetEvent(wsfHandlerId_t handl...

2020-07-07 20:52:49 1221

原创 WSF操作系统抽象层学习笔记(四)---定时器

定时器定时器的实现方式:使用OS自带的定时器模块,建立一个定时器,定时间隔为自定义TICKS,定时器的回调函数中设置定时器到时的事件。定时器模块定义了一个定时器的链表,用于定时器的管理。操作定时器管理链表的过程需要关闭任务调度。注意:OS本身定时器存在一定的误差,通过OS来实现的定时器也是有误差的。误差的大小跟WSF自定义的ticks大小有关。定时器的管理结构//定时器对象管理结构typedef struct wsfTimer_tag{ struct wsfTim..

2020-07-07 20:50:40 907

原创 WSF操作系统抽象层学习笔记(三)---消息列队

消息WSF的消息服务用于传递消息到对应的事件处理句柄。消息基于列队实现,此处不再进行细节记录。//消息队列的管理结构。typedef struct wsfMsg_tag{ struct wsfMsg_tag *pNext; //指向下一个消息的指针 wsfHandlerId_t handlerId; //消息对应的处理句柄} wsfMsg_t;实现机制和使用方法基于内存管理,从内存中申请sizeof(w...

2020-07-07 20:49:59 584

原创 WSF操作系统抽象层学习笔记(二)---列队(单向链表)

消息WSF的消息服务用于传递消息到对应的事件处理句柄。消息基于列队实现,此处不再进行细节记录。//消息队列的管理结构。typedef struct wsfMsg_tag{ struct wsfMsg_tag *pNext; //指向下一个消息的指针 wsfHandlerId_t handlerId; //消息对应的处理句柄} wsfMsg_t;实现机制和使用方法基于内存管理,从内存中申请sizeof(wsfMsg_...

2020-07-07 20:04:51 411

原创 WSF操作系统抽象层学习笔记 (一) ---简介和内存管理

1

2020-07-07 19:52:26 2444 1

ARM指令速查手册

ARM指令速查手册 。

2014-09-05

Embedded Android.pdf

Embedded Android 英文版 很好的学习android的资料

2014-09-05

安卓在开发板上的移植资源

编译好的安卓移植系统 直接移植就可以 体验一下安卓的移植过程

2013-10-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除