这篇具有很好参考价值的文章主要介绍了嵌入式linux学习之实践操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。
# 前沿
##1. 安装交叉编译器
* 在
开发板光盘
A-
基础资料
->5
、开发工具
->1
、交叉编译器
路径下找到
st-example-image-qt
wayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh
。将它拷贝到
Ubuntu 虚拟机上。 拷贝到 Ubuntu
后,赋予
st-example-image-qtwayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh 可执行权限。
*chmod +x st-example-image-qtwayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh
* 执行./st*.sh脚本安装
* 安装完成后,安装的交叉编译工具链都会安装在
/opt/
目录下。
* ls /opt/st/
* 安装完成之后,在使用之前先对交叉编译工具的环境进行设置,使用
source
执行安装目录下的
environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
脚本文件即可,如下所示:
source /opt/st/stm32mp1/3.1-snapshot/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
注意:每个终端需要执行上面的source命令之后,才能打印出${CC}.
使用${CC} -o led led.c编译
生成的led可执行文件通过scp命令传输到开发板,./led执行。
# 1.控制led
```c
15_led.c:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#define LED_TRIGGER "/sys/class/leds/user-led/trigger"
#define LED_BRIGHTNESS "/sys/class/leds/user-led/brightness"
#define USAGE() fprintf(stderr, "usage:\n" \
" %s <on|off>\n" \
" %s <trigger> <type>\n", argv[0], argv[0])
int
main
(
int
argc
,
char
*
argv
[])
{
int
fd1
,
fd2
;
/*
校验传参
*/
if
(
2
>
argc
) {
USAGE
();
exit
(-
1
);
/*
打开文件
*/
fd1
=
open
(
LED_TRIGGER
,
O_RDWR
);
if
(
0
>
fd1
) {
perror
(
"open error"
);
exit
(-
1
);
}
fd2
=
open
(
LED_BRIGHTNESS
,
O_RDWR
);
if
(
0
>
fd2
) {
perror
(
"open error"
);
exit
(-
1
);
}
/*
根据传参控制
LED */
if
(!
strcmp
(
argv
[
1
],
"on"
)) {
write
(
fd1
,
"none"
,
4
);
//
先将触发模式设置为
none
write
(
fd2
,
"1"
,
1
);
//
点亮
LED
}
else if
(!
strcmp
(
argv
[
1
],
"off"
)) {
write
(
fd1
,
"none"
,
4
);
//
先将触发模式设置为
none
write
(
fd2
,
"0"
,
1
);
//LED
灭
}
else if
(!
strcmp
(
argv
[
1
],
"trigger"
)) {
if
(
3
!=
argc
) {
USAGE
();
exit
(-
1
);
}
if
(
0
>
write
(
fd1
,
argv
[
2
],
strlen
(
argv
[
2
])))
perror
(
"write error"
);
}
else
USAGE
();
exit
(
0
);
}
```
使用${CC} -o 15_led 15_led.c编译
在虚拟机使用ifconfig ens33 192.168.137.4配置ip
开发板ifconfig eth 192.168.137.3配置ip
开发板:scp tao@192.168.137.4:~/linux/c_cpp/15_led ~/将文件传输至开发板。文章来源:https://www.toymoban.com/news/detail-824328.html
./15_led on点亮ds1,./15_led off熄灭ds1,./15_led trigger heartbeat使其闪烁。文章来源地址https://www.toymoban.com/news/detail-824328.html
也可以使用
DS0
进行测试,将 源码中的路径修改一下即可(/sys/class/leds/user-led/
修改为
/sys/class/leds/sys-led/
)
# 操作GPIO
到了这里,关于嵌入式linux学习之实践操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!