03 2020 档案
摘要:bl led_flicker led_flicker: // 配置寄存器 ldr r0, =0x56000050 ldr r1, (1<<4 2) str r1, [r0] ldr r0, =0x56000054 ldr r1, =0 ldr r2, =(1<<4) loop: // 循环点亮,熄灭
        阅读全文
                
摘要:1.简介 === 内核通过定时器中断来跟踪时间流。 定时器中断的中断间隔由内核根据HZ的值设定,HZ是一个与体系结构有关的常数默认HZ值范围为50~1200,而对软件仿真器的HZ值是24.大多数平台每秒有100或1000次时钟中断。 每次当时钟中断发生时,内核内部计数器的值就增加一。这个计数器的值在
        阅读全文
                
摘要:1.按键的4种控制方式对比 === 1.查询 :耗资源 | 2.中断 :没有超时机制 | APP 驱动 3.poll :加入了超时机制 | 4.异步通知 :按键发生后去通知app 驱动 APP 异步通知的注意事项 1.不是所有的设备都支持异步通知。应用程序通常假设只有套接字和终端才有异步通知能力。 
        阅读全文
                
摘要:1.poll的简介 === 允许进程决定是否可对一个或多个打开的文件做非阻塞的读取或写入。它们常常用于那些要使用多个输入或输出流而又不会阻塞其中任何一个流的应用中 unsigned int ( poll) (struct file , struct poll_table_struct ); 1.在一
        阅读全文
                
摘要:1.裸机和linux中断 === 裸机中断流程 1.外部触发 2.CPU发生中断,强制跳到异常向量处 3.跳到具体函数 a.保存具体函数 b.处理具体函数 c.恢复中断现场 linux中断 ARM架构的CPU的异常向量基地址可以是0x00000000或0xffff0000这个地址并不是物理地址,是虚
        阅读全文
                
摘要:1.前言 Linux内核就是由各种驱动组成的 Linux操作系统将所有的设备都看成文件,以操作文件的方式访问设备。 应用程序不能直接操作硬件,而是通过使用统一的接口函数调用硬件驱动程序。 2.字符设备驱动程序中重要的数据结构和函数 重要的数据结构和函数 可以在glibc的fcntl.h、unistd
        阅读全文
                
摘要:1.应用程序,库,内核,驱动程序的关系 === (1).应用程序使用库提供的接口函数(open,read,write,ioctl等)函数可以打开设备文件 (2).库根据open函数传入的参数执行“swi”指令,这条指令会引起CPU异常,进入内核。 (3).内核的异常处理函数根据这些参数找到相应的驱动
        阅读全文
                
摘要:1.框架 === 2.文件管理 === 工程目录结构 include头文件目录 3.各个模块解析 === 格式format模块(在render目录下) Makefile obj y += picfmt_manager.o obj y += bmp.o obj y += jpg.o picfmt_ma
        阅读全文
                
摘要:1.代码解析 === GenericGetInputEvent / 函数名称: GenericGetInputEvent 功能描述: 读取输入数据,并判断它位于哪一个图标上 输入参数: ptPageLayout 内含多个图标的显示区域 输出参数: ptInputEvent 内含得到的输入数据 返 回
        阅读全文
                
摘要:1.ShowPage的结构 === static void ShowMainPage(PT_PageLayout ptPageLayout) 1. 获得显存 2. 描画数据 3. 刷到设备上去 4. 解放显存 2.代码解析 === main_page.h typedef struct PageLay
        阅读全文
                
摘要:1.指针数组和数组指针 === 指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。 数组指针:首先它是一个指针,它指向一个数组。在 32 位系统下永远是占 4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。 下面
        阅读全文
                
摘要:1.页面的框架 === main_page.c include include static T_PageAction g_tMainPageAction = { .name = "main", .Run = MainPageRun, .GetInputEvent = MainPageGetInpu
        阅读全文
                

 浙公网安备 33010602011771号
浙公网安备 33010602011771号