0%

1. 输入系统框架及调试

1.1 框架概述

image-20230917174044630

  1. APP 发起读操作,若无数据则休眠;

  2. 用户操作设备,硬件上产生中断;

  3. 输入系统驱动层对应的驱动程序处理中断:

    读取到数据,转换为标准的输入事件,向核心层汇报。 所谓输入事件就是一个input_event结构体。

  4. 核心层可以决定把输入事件转发给上面哪个 handler 来处理:

    • 从 handler 的名字来看,它就是用来处输入操作的。有多种 handler,比 如:evdev_handler、kbd_handler、joydev_handler 等等。

    • 最常用的是 evdev_handler:它只是把 input_event 结构体保存在内核buffer 等,APP 来读取时就原原本本地返回。它支持多个 APP 同时访问输入设备,每个 APP 都可以获得同一份输入事件。

    • 当 APP 正在等待数据时,evdev_handler 会把它唤醒,这样 APP 就可以返回数据。

  5. APP 对输入事件的处理:

  6. APP获得数据的方法有2种:直接访问设备节点( 比如/dev/input/event0,1,2,...),或者通过tslib、libinput这类库来间接访问设备节点。这些库简化了对数据的处理。

1.2 编写APP需要掌握的知识

阅读全文 »

1. LCD操作原理

  1. 驱动程序:Farmebuffer驱动程序设置好LCD控制器:
    1. 根据 LCD 的参数设置 LCD 控制器的时序、信号极性;
    2. 根据 LCD 分辨率、BPP(Bit Per Pixel)分配 Framebuffer。
  2. 应用程序:使用 ioctl 获得 LCD 分辨率、BPP;通过 mmap 映射 Framebuffer,在 Framebuffer 中写入数据
  3. LCD控制器周而复始的从内存中取出LCD屏幕上每一个像素点的显示数据

image-20230912204455923

计算(x,y)坐标处像素对应Framebuffer地址:

1
(x,y)像素起始地址 = fb_base + (xres * bpp / 8) * y + x * bpp / 8
阅读全文 »

ls

编写ls命令

  • 列出目录的内容
  • 读取并显示文件的属性
  • 给出名字,判断它是目录还是文件

目录

  • 目录是一种特殊的文件,它的内容一条条记录,每一个记录代表一个文件或者目录
  • 目录文件永远不空,至少包含两个特殊项”.”或者”..”
阅读全文 »

who

  • 把程序的可执行文件放到任意的一个目录中(/bin /usr/bin /usr/local/bin),就可以为系统添加新的命令

寻找who的踪迹

  • man who:发现文件utmp,wtmp很关键
  • man -k utmp:按关键字搜索utmp,发现:
1
2
3
utmp (5)            - login records
login (3) - write utmp and wtmp entries
logout (3) - write utmp and wtmp entries
阅读全文 »

more

more的三种用法

1
2
3
more filename      //分页显示文件内容
command | more //将command命令的输出分页显示
more < filename //more从标准输入中获取要分页显示的内容,而标准输入被从重定向到filename
  • enter显示下一行,space显示下一页,q退出
  • 管道命令|将command的输出重定向到more的输入

例如命令ls /bin | more,ls命令的标准输出重定向到more的标准输入,如果还是使用getchar()来读取用户的输入,那么就会从ls的输出中读取,这显然不行,所以需要其他方式

阅读全文 »

1.GCC编译器的使用

image-20230910100317585

  • 预处理:预处理阶段会根据指令对源代码进行替换、宏展开等操作。在这个阶段,编译器会根据#include指令查找头文件,并将头文件的内容插入到main.c文件中。预处理后的文件通常以.i或.ii为扩展名。
  • 编译:编译阶段将预处理后的文件翻译成汇编语言文件(通常使用. s扩展名)。编译器将C代码转换为汇编代码,将高级语言代码转换成底层机器语言的表示形式,同时进行语法检查和优化
  • 汇编:汇编阶段将汇编语言代码转换成机器码指令。汇编器将每条汇编指令转换为可执行的机器码,并生成目标文件(通常使用.o扩展名)。目标文件包含机器码指令和一些附加信息,如符号表等。
  • 链接:链接阶段将目标文件与其他库文件进行组装,生成最终的可执行程序。在这个阶段,链接器会解析代码中的符号引用,并将其与库函数的定义进行关联。如果找不到某个符号的定义,链接将会失败,并报出”undefined reference“的错误。

1.1 常用编译选项

常用选项 描述
-E 预处理
-S 编译
-c 进行预处理、编译、汇编,但是不链接
-o 指定输出文件
-I 指定头文件目录
-L 指定链接时库文件目录
-l 指定链接哪一个库文件
-v 输出详细编译信息(比如说库文件查找路径)
阅读全文 »

1.根目录结构(FSH标准)

  • /bin:所有用户都可以使用的、基本的命令

  • /boot:启动文件,比如内核等

  • /dev:以文件的形式保存 Linux 所有的设备及接口设备

  • /etc:配置文件

  • /home:家目录

  • /root:root用户的家目录

  • /lib:主要放置系统开机使用的、/bin 和 /sbin 目录下的命令使用的库函数

  • /media:插上U盘等外设会挂在到该目录上

  • /mnt:用来挂载其他文件系统

  • /opt:第三方软件放置的目录

  • /proc:这个目录是一个虚拟文件系统,它放置的数据都是在内存当中,例如进程、外部设备状态、网络状态等

  • /sbin:该目录下放置开机过程中需要的命令,包括开机、修复、还原系统等

  • /sys:用来挂载虛拟的sys文件系统,可以查看系统信息:比如设备信息

  • /tmp:置文件的地方

  • /var:放置常态化变动的文件,例如缓存、登录日志文件、软件运行产生的文件等

  • /usr:Unix Software Resource,存放可分享的与不可变动的数据

    • /bin:绝大部分的用户可使用指令都放在这里(与开机无关),/bin中的命令跟开机有关
    • /include:C/C++的头文件和包含文件
    • /lib:库
    • /local:系统管理员在本机自行下载的软件
    • /usr/src/:源码放置的地方
    • /usr/share/:放置共享文件的地方
    • /usr/sbin/:非系统正常运行需要的系统命令

1.1 Shell的执行

  1. 解析用户输入(以空格分割字符串)
  2. 第一个参数为需要待执行程序的名称(在指定路径或者环境变量包含路径中寻找
  3. 其余参数为传递给该程序的参数
  • 举例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //hello.c
    #include <stdio.h>
    int main(int ac, char*av[])
    {
    if(ac >= 2)
    printf("Hello %s\n", av[1]);
    else
    printf("Hello wrold\n");
    return 0;
    }

    使用如下命令编译并执行,则在当前目录下寻找可执行文件hello:

    1
    2
    $ gcc hello.c -o hello
    $ ./hello Krocz

    如果使用如下命令执行,则会在环境变量保存的所有路径中寻找可执行文件hello:

    1
    $ hello Krocz

    可以选择将文件hello放到PATH保存的某个路径中,例如/usr/bin;也可以为环境变量PATH添加新路径

阅读全文 »

1.功能

  • 4位时间/日期显示
  • 4位温湿度显示
  • 蜂鸣器播放歌曲
  • WiFi联网时间校正
  • 可编程氛围灯

2. 硬件选型

  • 主控:stm32f103c8t6
  • 辉光管:in14
  • 辉光管主控:HV57708
  • 温湿度:GXHT30
  • 时钟芯片:DS1302
  • 氛围灯:WS2812C
  • WiFi模块:ESP-12F
  • 蜂鸣器:5020贴片蜂鸣器
阅读全文 »

《奇异人生1》后记——记录一段真挚的友谊

Snipaste_2024-02-15_11-39-07

当我拍下那只蓝色的蝴蝶时,我完全没有想到这只蝴蝶扇动的翅膀将会在阿卡迪亚湾掀起一场飓风。

在卫生间里,面对被枪杀的蓝发少女,麦克斯下意识地伸出手想要阻止事情的发生。令人意外的,麦克斯发现自己居然能够回溯时间,回到枪响之前,救下那位少女。很巧,这位蓝发少女正是麦克斯已经阔别了五年的好朋友克洛伊。显然,五年过去克洛伊已经变成了一个朋克少女,巨大的外表变化让麦克斯一时间并没有认出这位昔日的好友。

麦克斯和克洛伊就像一对紧密契合的齿轮;即使相隔了五年的距离,当命运的推手又将她们交叠在一起时,她们还是迅速咬合上了对方的节奏。她们一起欢笑,一起在劲爆的音乐中跳舞,一起在“海盗乐园”中玩耍,就像她们在小时候做的那样。真希望这样的时光能够一直下去。
未命名图片13

阅读全文 »