demo例程一举攻克
时间:10-02
整理:3721RD
点击:
今天继续和大家分享一下demo例程学习过程中的心得。
例程实验准备工作:
1、创龙AM4379開發板一台
2、網線一根
3、miniusb轉USB串口線一根
4、裝有虛擬機的PC一台
5、secureCRT軟件
一、helloworld应用例程演示
说到程序显示,程序猿们对helloworld应该最熟悉不过了,通过前面的例程提到的nfs環境的搭建,我們可以直接在開發板系統下運行共享的虛擬機程序,這樣就省去了copy到板子的步驟了。
1、执行以下命令挂载 nfs 服务器共享目录到开发板的/nfs 目录
mount -t nfs -o nolock 192.168.100.60:/home/am437 /nfs
2、執行虛擬機中共享的app\helloworld文件夾下的helloworld文件
可以看到執行命令后,串口有返回打印信息
二、LED测试
硬件電路如圖:
LED控制目录在"sys/calss/leds"目录下,对应关系如下:
D8(GPIO5[10]):user_led0
D9(GPIO5[11]):user_led1
D10(GPIO5[12]):user_led2
D11(GPIO5[13]):user_led3
控制相應的命令即可控制LED的亮滅,如圖:
echo 0 >/sys/class/leds/user-led0/brightness,打開/brightness文件可看到內容為0,燈滅
echo 1 > /sys/class/leds/user-led0/brightness,打開/brightness文件可看到內容為1,燈亮
如圖:
顯然,這裡將對寄存器的操作簡化為函數式操作,簡單的寫0/1即可,省去了研究寄存器的苦惱。
串口端可以操作單個led也可以操作多個led,如流水灯点亮的實現
執行:在app\led\led_loop.sh下的 ./led_loop.sh,可看到led燈輪流亮滅,為何一個腳本就可以有如此結果呢,打開腳本一探究竟,如圖:
這裡的maxbrightness值為255,應該是表示亮度的意思,但是怎麼修改值都不變,還有待去研究一下,如圖:
按理說 亮度應該也是可以調節的。
三、按键测试
开发板底板上有2个普通用户按键KEY0和KEY1,另外一个NMI是非屏蔽中断按键。
硬件電路圖如下:
1、運行app\button\button_test下的app\button\button_test,如圖:
2、分别按下KEY0、KEY1,未出現打印信息
明天有時間用萬用表測量一下電平對不對
程序如下:
四、串口启动测试
1、 开发板上启动方式选择为:UART0,拨码开关选择为:11010(5~1)。
2、硬件電驢如圖:
3、打開串口终端,会一直打印"cccccccccc"。如下
所示:
先寫到這吧 困死了
例程实验准备工作:
1、创龙AM4379開發板一台
2、網線一根
3、miniusb轉USB串口線一根
4、裝有虛擬機的PC一台
5、secureCRT軟件
一、helloworld应用例程演示
说到程序显示,程序猿们对helloworld应该最熟悉不过了,通过前面的例程提到的nfs環境的搭建,我們可以直接在開發板系統下運行共享的虛擬機程序,這樣就省去了copy到板子的步驟了。
1、执行以下命令挂载 nfs 服务器共享目录到开发板的/nfs 目录
mount -t nfs -o nolock 192.168.100.60:/home/am437 /nfs
2、執行虛擬機中共享的app\helloworld文件夾下的helloworld文件
可以看到執行命令后,串口有返回打印信息
二、LED测试
硬件電路如圖:
LED控制目录在"sys/calss/leds"目录下,对应关系如下:
D8(GPIO5[10]):user_led0
D9(GPIO5[11]):user_led1
D10(GPIO5[12]):user_led2
D11(GPIO5[13]):user_led3
控制相應的命令即可控制LED的亮滅,如圖:
echo 0 >/sys/class/leds/user-led0/brightness,打開/brightness文件可看到內容為0,燈滅
echo 1 > /sys/class/leds/user-led0/brightness,打開/brightness文件可看到內容為1,燈亮
如圖:
顯然,這裡將對寄存器的操作簡化為函數式操作,簡單的寫0/1即可,省去了研究寄存器的苦惱。
串口端可以操作單個led也可以操作多個led,如流水灯点亮的實現
執行:在app\led\led_loop.sh下的 ./led_loop.sh,可看到led燈輪流亮滅,為何一個腳本就可以有如此結果呢,打開腳本一探究竟,如圖:
- #init all leds
- echo 0 > /sys/class/leds/user-led0/brightness
- echo 0 > /sys/class/leds/user-led1/brightness
- echo 0 > /sys/class/leds/user-led2/brightness
- echo 0 > /sys/class/leds/user-led3/brightness
- DELAY_TIME=1
- #led loop
- while true; do
- echo 1 > /sys/class/leds/user-led0/brightness
- sleep $DELAY_TIME
- echo 0 > /sys/class/leds/user-led0/brightness
- echo 1 > /sys/class/leds/user-led1/brightness
- sleep $DELAY_TIME
- echo 0 > /sys/class/leds/user-led1/brightness
- echo 1 > /sys/class/leds/user-led2/brightness
- sleep $DELAY_TIME
- echo 0 > /sys/class/leds/user-led2/brightness
- echo 1 > /sys/class/leds/user-led3/brightness
- sleep $DELAY_TIME
- echo 0 > /sys/class/leds/user-led3/brightness
- done
這裡的maxbrightness值為255,應該是表示亮度的意思,但是怎麼修改值都不變,還有待去研究一下,如圖:
按理說 亮度應該也是可以調節的。
三、按键测试
开发板底板上有2个普通用户按键KEY0和KEY1,另外一个NMI是非屏蔽中断按键。
硬件電路圖如下:
1、運行app\button\button_test下的app\button\button_test,如圖:
2、分别按下KEY0、KEY1,未出現打印信息
明天有時間用萬用表測量一下電平對不對
程序如下:
- #include <stdlib.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <linux/input.h>
- int main(int argc, char **argv)
- {
- int key_state;
- int fd;
- int ret;
- int code;
- struct input_event buf;
- fd = open("/dev/input/event2", O_RDONLY);
- if (fd < 0) {
- printf("Open Gpio_Keys failed!\n");
- return -1;
- }
- printf("Open Gpio_Keys successed!\n");
- while(1) {
- ret = read(fd, &buf, sizeof(struct input_event));
- if (ret <= 0) {
- printf("read failed!\n");
- return -1;
- }
- code = buf.code;
- key_state = buf.value;
- switch(code)
- {
- case KEY_PROG1:
- code = '5';
- break;
- case KEY_PROG2:
- code = '6';
- break;
- }
- if(code != 0)
- printf("SW%c %s\n", code, key_state ? "down" : "up");
- }
- printf("Key test finished.\n");
- close(fd);
- return 0;
- }
四、串口启动测试
1、 开发板上启动方式选择为:UART0,拨码开关选择为:11010(5~1)。
2、硬件電驢如圖:
3、打開串口终端,会一直打印"cccccccccc"。如下
所示:
先寫到這吧 困死了