从零开始的嵌入式Linux_1_0/上手开箱

系列 - 从零开始的嵌入式Linux-1周目

从STM32新手村备战智能车开始至今,研究嵌入式系统已有5个春秋;然而至今论Linux竟不能侃侃而谈,实属惭愧,故痛定思痛,找一块资料完善的板卡重走长征路,

年少不知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);
	}
}

相关描述见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

参考:设备驱动-16-Linux 内核LED子系统 - fuzidage - 博客园