Cubieboard2裸機開發之(一)點亮板載LED


前言

        CUbieboard2板載兩個LED,一個綠色的,一個藍色的,其中綠色LED通過三極管與PH20管腳連接,藍色LED通過三極管與PH21管腳連接,這里只以藍色LED為例,電路原理圖如圖1和圖2所示。

                                      圖1 LED所使用的管腳

                                           圖2 LED與三極管連接圖

由此可知,當PH21輸出高電平時,三極管處於導通狀態,從而藍色LED會被點亮;當PH21輸出低電平時,三極管處於截止狀態,藍色LED熄滅。

一、目的

       編寫第一個裸機程序,點亮板載的藍色LED。

二、源代碼說明

       程序很簡單,已給出詳細注釋,直接看代碼好了,如下所示:

 1 /*
 2  * (C) Copyright 2014 Conan Liang <lknlfy@163.com>
 3  *
 4  * a very simple source to set the blue led on for Cubieboard2.
 5  * 
 6  */
 7 
 8 /* GPIO reg addr */
 9 #define SUNXI_PIO_BASE          0x01C20800
10 #define SUNXI_PIO_PH_CFG2_BASE  (SUNXI_PIO_BASE + 0x104)
11 #define SUNXI_PIO_PH_DAT_BASE   (SUNXI_PIO_BASE + 0x10C)
12 
13 /* global entry point */
14 .globl _start
15 _start: b    reset
16 
17 reset:
18     ldr r0, =SUNXI_PIO_PH_CFG2_BASE
19     /* before write, read the reg value into r1*/
20     ldr r1, [r0]
21     /* blue led is connected to PH21 */
22     ldr r2, =(0xf << 20)
23     mvn r3, r2
24     /* clear 4 bits for PH21*/
25     and r1, r1, r3
26     /* set PH21 for output function */
27     orr r1, r1, #(0x1 << 20)
28     str r1, [r0]
29 
30     /* set PH21 output 1(high value), so the blue led is on */
31     ldr r0, =SUNXI_PIO_PH_DAT_BASE
32     ldr r1, [r0]
33     orr r1, r1, #(1 << 21)
34     str r1, [r0]
35 loop:
36     b loop

三、驗證

         使用arm-linux-gnueabihf工具編譯后生成led.b文件,再使用mksunxiboot工具在led.b文件前面加上一個頭部,最終生成led.bin文件,使用以下命令將led.bin文件燒寫到TF中:

#sudo dd if=./led.bin of=/dev/sdb bs=1024 seek=8

      將TF卡插入Cubieboard2,上電即可看到藍色LED被點亮。效果如圖3所示。

                                                圖3 效果圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM