嵌入式Linux(三)模仿STM32驱动开发

1. SM32寄存器结构体

STM32使用一个结构体将所有外设的寄存器存放在一起。

2. 修改驱动

①清除bss段。
嵌入式Linux(三)模仿STM32驱动开发_第1张图片
②设置基地址,编写寄存器结构体,定义外设指针(访问宏)。在结构体中添加寄存器要注意地址连续性,如果不连续添加占位,比如RESERVED_1[2],就跳过了两个寄存器。
在这里插入图片描述
嵌入式Linux(三)模仿STM32驱动开发_第2张图片
在这里插入图片描述

3. 本节意义

  主要是一个清除BSS段,其次提供了通过类似STM32通过结构体访问寄存器的方式。

4. NXP官方的SDK使用

  NXP官方帮我们实现了上面的东西,但是Linux驱动开发不建议使用库(因为很少有为Cortex-A内核编写裸机SDK包的,I.MX6ULL是个别现象),因此只移植一小部分用作演示。
  这里需要移植fsl_common.h,fsl_iomuxc.h,MCIMX6Y2.h到vscode工作区下,编写一个cc.h提供这三个文件用到的数据类型宏定义。注意这里不能用官方的这三个文件,用正点原子修改过的,因为单独移植三个文件导致很多头文件未包含。MCIMX6Y2.h包含了很多宏定义,fsl_iomuxc.h则有一些GPIO复用,属性等相关的库函数可以调用。
  main函数不显式地对寄存器进行操作:
嵌入式Linux(三)模仿STM32驱动开发_第3张图片
  这一节用宏定义了一个通用Makefile模板,以后要改直接改$(NAME)即可:
嵌入式Linux(三)模仿STM32驱动开发_第4张图片
  关于NXP的SDK使用,建议只使用GPIO的库函数,因为GPIO的配置较为基础和常用,别的不建议依赖库函数。

你可能感兴趣的:(嵌入式,stm32,驱动开发,单片机)