树莓派编程:代码构建、GPIO 与浮点运算全解析
代码构建流程
代码构建是一个复杂且关键的过程,下面我们逐步分析程序的各个部分。
首先,最初的代码块用于定义常量和标签,这些内容通常占据文件的前几页,以三个 asciz 字符串定义结束。从注释和前文内容来看,每个部分的功能应该会逐渐清晰。
程序从 main: 开始,打开要映射的文件需要两个关键信息:要打开的设备名称地址和打开文件时要分配的属性。这些信息需分别加载到 R0 和 R1 寄存器中。 'devgpiomem' 字符串的地址由 devicefile 中指定的地址指针提供,然后调用 Linux 内核的 open 函数。返回程序时, R0 会包含文件描述符,若为负数则表示出错,文件无法打开,此时会显示相应错误信息并终止程序。
若一切正常,程序流程会在 moveon1 处继续,将文件描述符的副本保存到 R4 供程序使用,并在 R8 中备份。同时,还需保存用于访问 GPIO 的外设地址( 0x3F200000 )并将副本保存在 R9 中,然后将这两项压入栈顶。
接下来是 mmap 函数,它用于为我们映射虚拟内存,该函数需要六个参数:
1. R0 :设备应
超级会员免费看
订阅专栏 解锁全文
44

被折叠的 条评论
为什么被折叠?



