1. 计算机系统 在学习SylixOS之前,我们有必要简单了解什么是嵌入式和实时操作系统,下面的这些类别都是按照我自己的理解划分的,可能并不是特别的严谨。这里说的计算机系统包括了硬件系统和软件系统两部...
SylixOS PCIe控制器驱动开发(五)
SylixOS注册PCIe控制器驱动 PCIe驱动主要分为两大类,PCIe控制器驱动和PCIe设备驱动。PCIe控制器驱动主要负责配置空间读写方法的实现、中断号获取和BAR地址自动配置功能,设备驱动根...
SimpleOS开发(2)简单打印
1. 设计思路 全志D1芯片fel模式下会初始化好串口为115200波特率,所以我们的思路是封装好串口发送数据接口来使用即可,而无需再去设置串口的波特率等寄存器,从而简化代码。 1.1 启动文件 启动...
SylixOS字符设备驱动开发(六)
SylixOS驱动统计打开次数 在上一节我们说驱动被打开的次数是由驱动开发者维护的,其实在设备实例数据结构中就有一个成员表示设备被打开的次数: typedef struct { LW_LIST_LIN...
SylixOS PCIe设备驱动开发(十二)
SylixOS PCIe设备ID匹配 我们知道声卡有声卡的驱动,网卡有网卡的驱动,那么我们在加载声卡驱动的时候,系统是怎么知道当前的驱动是给声卡这个设备用的而不是给网卡用的呢?这就是通过驱动中定义的设...
RISCV基础开发(三)
中断和异常处理 在RISCV架构设计中,有一系列的控制和状态寄存器( Control and Status Registers)简称CSR,在三种特权级别下都有其对应的CSR,比如m模式下的命名都为m...
SylixOS BSP开发(十)
实现串口SIO驱动(二) 在实现SIO驱动操作集之前,我们先来学习下SylixOS下标准输出、标准输入、标准出错时如何工作的: 标准输出:当程序中使用printf打印信息时,就是往系统标准输出上输出信...
全志D1开发(八)SD驱动之注册Host信息
1. 注册SD Memory设备驱动 在SylixOS的SD框架设计中,需要将主控制器驱动和设备驱动分别注册到SDM框架中以方便管理。使用内核SDM相关接口之前需要先调用 API_SdmLibInit...
SimpleOS开发(8)改进进程调度
1. 系统接口名称修改 为了方便使用系统接口以及辨识系统接口,需要将系统接口的命名进行规范。这里的系统接口是指通用功能接口,比如开关中断、申请释放内存等等,simpleos采用简单的"os_"前缀来命...
SylixOS移植常见问题——编译过多文件导致报错
问题复现: 由于RealEvo IDE在Windows下使用的sh.exe支持的命令长度有限(命令要小于16K),如果需要编译的源文件过多,可能会报溢出错误或"make (e=87): 参数错误。"等...
SylixOS块设备驱动开发(七)
虚拟块设备驱动源码 #define __SYLIXOS_KERNEL #include <SylixOS.h> #include <module.h> #include <...
(六)SylixOS同步互斥之自旋锁
1.基本作用 在前面我们介绍过互斥锁用于共享资源的互斥访问,但是互斥锁有一个缺点就是资源开销比较大。因为获取互斥锁和释放互斥锁过程中都需要进出内核,如果共享资源自身不是很大的话,比如可能就是修改一个变...