1 什么是bsp
board support package 板级支持包,硬件支持包
使用bsp提供的驱动程序和函数。
也可以自己去编写基于寄存器的程序
2 实现对指定地址进行读写
使用指针读写
0x00000020
return *(volatile u8 *) 0x00000020 读操作
*(volatile u8 *) 0x00000020 = 0x12 将0x12写入地址中去。
u8:u8表示无符号char字符类型。
volatile修饰的数据,便一起不能对其进行优化,程序员不能改变他们的值,但是可以通过外部工具对其进行修改。
如: u8 a,b; { a=2; b=a; } 这时编器会把它改成: u8 a,b; { a=2; b=2; } 当运行到中间位置,中断把a改了,结果就是错的。 vol ...
使用IO读写函数
提供读写函数
xli_io.h文件
cpu的本质就是对地址不断读取数据。
3 知道各个外设的硬件信息,寄存器地址,位功能
CPU的编程就是对各个地址的存储器/寄存器进行读写操作,如何知道哪个地址的数据能够对应什么功能。 指定功能由哪个地址的存储器中的值控制。
UG585查看cpu数据手册,datasheet
通过绝对地址直接写入数据,absolute address
*(volatile u32 *) 0xE000A04C = 0x123456
xuartps_hw.h
xspips_hw.h
xsdps_hw.h
4如何解决程序中的延时
sleep 函数 usleep 单位为1s
包含unistd.h头文件即可使用
include "unistd.h"
unistd.h提供对POSIX操作系统API的访问功能的头文件名称。
也可以使用定时器中断的形式
5 使用跨平台可移植的数据类型
包含了xil_types.h 头文件就可以使用这些数据类型定义变量。
u8
u16
换开发平台,跨平台会出现问题。
include "stdint.h"头文件
c语言标准的头文件stdint.h,使用该文件提供的数据类型。
unit8_t
unit16_t
unit32_t