栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

开发板学习笔记

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

开发板学习笔记

基础的操作寄存器,是直接访问该寄存器,但如果寄存器太多,也会显得太过繁琐,也会比较乱。

模仿stm32驱动开发,利用结构体来承载所有的寄存器抽象化为外设。

将上一章的跑马灯实验修改一下。

修改驱动

1、清除bss段

bss段是链接脚本中定义但没有被初始化的变量,对于这些变量,最好是清零。

_start:                   
mrs ro, cpsr         
bic r®, r0,#x1f   
orr r®, r,#@x13   
msr cpsr, ro         

ble bss_loop       
2、定义外设的基地址,构建结构体。

#define CCM BASE

(0x020C4000)

#define CCM_ANALOG_BASE

(0x020C8000)

#define IOMUX_SW_MUX_BASE

(0x620E0014)

#define IOMUX_SW_PAD_BASE

(0x620E0204)

#define GPIO1_BASE 

(0xe209c000)

#define GPIO2_BASE

(0x020A0000)

#define GPIO3 BASE

(0x020A4000)

#define GPIO4_BASE

(0x020A8000)

#define GPIO5_BASE 

(0xe20AC000)

3、编写链接脚本。

SECTIONS {

0x87800000;

.text :

start.o

*(.text){

.rodata ALIGN(4):{*(.rodata)}

.data ALIGN(4):{*(.data)}

[ibss_sart=.;

.bss ALIGN(4):{*(.bss)*(COMMON)}

lbss_end=.;

}

运行结果:

 

 

对于一些比较大的工程,文件可能会比较多,所以会bsp工程管理很重要。

BSP工程管理原理

bsp工程管理的目的是为了模块化管理代码,同一属性的文件放在同一个文件夹里。

1、新建所需的文件夹,将同一属性的文件放到相应的文件夹中。
2、修改 clk、led、delay 驱动,创建对应的驱动文件,然后放置到对应的目录中。
3、根据编写的新驱动文件,修改 main.c 文件内容。
设置 VSCODE 头文件路径。先创建:yscode.目录,然后打开 c/c++配置器,会在yscode
目录下生成一个叫做 c.cpp_properties,json 的文件。

"configurations":[

{
"name":"Linux",
"includePath":[
"${workspaceFolder}/**”
"${workspaceFolder}/bsp/clk",
"${workspaceFolder}/bsp/delay"
"${workspaceFolder}/bsp/led",
"${workspaceFolder}/imxqu",
"${workspaceFolder}/project"

]
"defines":[],
"compilerPath":"/usr/bin/gcc",
"cStandard":"c11",
"cppStandard":"c++17",
"intellisenseMode":"clang-x64”

}

]
"version": 4
 

 

 

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1004878.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号