从零开始的嵌入式Linux_1_0/上手开箱
系列 - 从零开始的嵌入式Linux-1周目
目录
引言
从STM32新手村备战智能车开始至今,研究嵌入式系统已有5个春秋;然而至今论Linux竟不能侃侃而谈,实属惭愧,故痛定思痛,找一块资料完善的板卡重走长征路,
BeagleBone Black
年少不知TI好,经历了若干轮买板-点灯-吃灰的循环后,才知道资料齐全的好处。此板从Datasheet、原理图等资料一应俱全,适合用于深挖学习。
在此要感谢得捷&达尔闻Back2School的大力支持。没有此次活动,我大概率下不了决心全款入手此板,用树莓派得过且过了。
硬件
查看随板附送彩页可知,此板资源包括:
- 百兆以太网口
- USB Host
- Micro HDMI(其实是SoC的RGB接口转的)
- 4个LED
- IO引出
主控SoC为TI的AM3358,属于Sitara系列,核心为Cortex-A8 1.0GHz。在工业通信和3D图形引擎方面有一些特色。
开机
随板附送1条Mini-USB线缆,使用此线将BBB连接至电脑,默认使用板载eMMC内系统启动。几十秒后,进入系统。此时既可以通过VCOM串口连接至shell,也可以通过SSH连接192.168.7.2,默认用户名debian,口令temppwd。BBB通过将自身模拟为rndis设备,以网络设备的形式连接至电脑。
在shell中执行lsb_release -a,得到:
debian@beaglebone:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
自带系统为Debian 10,内核版本4.19。
点灯
在浏览器中访问http://192.168.7.2/ide.html,即可使用cloud9提供的网页ide。这个开发环境提供了一系列demo,可以参考学习。相关文件此时位于/var/lib/cloud9
////////////////////////////////////////
// blinkLED.c
// Blinks the USR3 LED.
// Wiring: None
// Setup:
// See:
////////////////////////////////////////
#include <stdio.h>
#include <unistd.h>
int main() {
FILE * trigger = fopen("/sys/class/leds/beaglebone:green:usr3/trigger", "w");
FILE * brightness = fopen("/sys/class/leds/beaglebone:green:usr3/brightness", "w");
int on = 0;
fprintf(trigger, "none\n");
while(1) {
fprintf(brightness, "%d\n", on);
fflush(brightness);
if(!on)
on = 1;
else
on = 0;
usleep(500000);
}
}
LED子系统
相关描述见kernel内/Documentation/leds/leds-class.c
每一个LED设备都会在/sys/class/leds中展示,每个设备有如下属性:
| 属性 | 含义 |
|---|---|
| brightness | 亮度,0~max_brightness |
| max_brightness | 最大亮度 |
| trigger | 触发方式。* |
| delay_off/delay_on | 触发方式为timer时,亮灭的周期(ms) |
*触发方式包含:
[none] rfkill-any rfkill-none kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock mmc0 mmc1 usb-gadget usb-host timer oneshot disk-activity disk-read disk-write ide-disk mtd nand-disk heartbeat backlight gpio cpu cpu0 activity default-on panic netdev