SoC开发板汇编c语言混合,基于Cortex-A9 LED汇编、C语言驱动编写

SoC开发板汇编c语言混合,基于Cortex-A9 LED汇编、C语言驱动编写_第1张图片

0. 前言

一般我们购买一个开发板,厂家都会给出对应的电路图文件,我们可以通过搜索对应名称来查找到对应的外设。对于驱动工程师来说,我们只需要知道外设与SOC交互的一些数据线和信号线即可。

用主控芯片控制这些外设的一般步骤:

看电路原理图,弄明白主控芯片和外设是怎么连接的,对于驱动工程师来说,主要是看外设的一些clk、数据引脚、控制引脚是如何连接的;

外设一般都会连接到SOC的1个或者多个控制器上,比如i2c、spi、gpio等,有的是数据线有的是信号线,中断线等;

根据电路连接和需求对主控芯片进行设置,往往对外设的设置都是通过寄存器操作实现;

书写相应代码,实现功能,不同类型的外设,代码结构也不尽相同,比如按键,我们既可以通过轮询方式读取按键信息,也可以通过中断方式来读取。

下面我们就以华清远见的fs4412开发板为例来看如何编写led的裸机程序。SOC exynos 4412 datahseet 下载地址:

https://download.csdn.net/download/daocaokafei/12533438

一、LED灯电路图

首先看下led电路图:

SoC开发板汇编c语言混合,基于Cortex-A9 LED汇编、C语言驱动编写_第2张图片

LED电路图

该板子有4个LED,是发光二极管,有电流是为蓝色;

led都接了上拉电阻;

三极管的基极接了SOC的某个GPIO引脚;

比如GPX1_0,当该引脚为高电平是,三极管pn结导通,于是LED3两侧就有了电势差,LED3被点亮,如果该引脚为低电平,pn结截止,LED3两侧就没有了电势差,LED3熄灭。

下面是CPU核访问GPIO控制器的数据通路:

AHB:高速总线

APB Bridge:APB总线桥

APB:外设总线,低速总线

GPIO挂载在APB总线上

SoC开发板汇编c语言混合,基于Cortex-A9 LED汇编、C语言驱动编写_第3张图片

GPIO 与 SOC

由上图可知,cpu要访问GPIO的寄存器需要经过的路径。

二、GPIO

GPIO(General Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。

用户可以通过GPIO口和硬件进行数据交互(如UART),控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。GPIO口的使用非常广泛。

1. GPIO的优点

低功耗:GPIO具有更低的功率损耗(大约1µA,µC的工作电流则为100µA)。

你可能感兴趣的:(SoC开发板汇编c语言混合)