嵌入式linux学习之实践操作

这篇具有很好参考价值的文章主要介绍了嵌入式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
嵌入式linux学习之实践操作,嵌入式linux,linux,学习,运维

注意:每个终端需要执行上面的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 ~/将文件传输至开发板。

./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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式操作系统(嵌入式学习)

    嵌入式操作系统是一种专门设计和优化用于嵌入式系统的操作系统。它是在资源受限的嵌入式设备上运行的操作系统,如微控制器、嵌入式处理器和系统芯片等。 嵌入式操作系统的主要目标是提供对硬件资源的有效管理和对应用程序的调度,以实现系统的可靠性、实时性和效

    2024年02月10日
    浏览(59)
  • 嵌入式开发:单片机嵌入式Linux学习路径

    SOC(System on a Chip)的本质区别在于架构和功能。低端SOC如基于Cortex-M架构的芯片,如STM32和NXP LPC1xxx系列,不具备MMU(Memory Management Unit),适用于轻量级实时操作系统如uCOS和FreeRTOS。高端SOC如基于Cortex-A架构的芯片,如三星、高通、飞卡、全志和瑞芯微等,具备MMU,支持虚拟内

    2024年02月15日
    浏览(56)
  • 嵌入式学习之进程

    1.进程间通信概述 UNIX系统IPC是各种进程通信方式的统称。 2.管道通信原理 特点: 1.它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。 2.它只能用于具有亲缘关系的进程之间通信(也是父子进程或者兄弟进程之间)。 3.它可以看成是一种特殊文件,对

    2024年02月10日
    浏览(35)
  • 嵌入式硬件电路学习之阻抗

    阻抗(Impedance)是指电路中交流电源施加电压后,电路元件对电流的阻碍程度。它是一个由幅值和相位角组成的复数。 阻抗是交流电路中电阻、电感、电容等元件共同表现出来的电学量,表示为 $Z$。它随输入信号的频率而变化,用复数形式表示。 对于包含电阻 $R$、电感 $

    2024年02月03日
    浏览(49)
  • 嵌入式软件学习--linux(1)

     echo $PATH   查看环境变量 。若在,可执行 ;若不在,1.将当前路径添加到环境变量 2.将文件移动到环境变量的路径中         sudu gedit /etc/environment          PATH=\\\"/usr/local/sbin/:/usr/local/sbin/: /home/ccc \\\"         重启系统或重新登陆         vim ~/.bashrc            

    2024年04月29日
    浏览(44)
  • 嵌入式学习笔记——使用寄存器编程操作GPIO

    上一篇重点介绍了STM32 GPIO的输入输出模式,在整个框图中我们发现需要我们使用代码来控制GPIO的模式,本文的重点就是使用寄存器的编程方式,实现对于GPIO口的操作。 在这里首先需要做一个区分,我们常见的STM32的开发方式有两种,也就是寄存器开发与库函数开发。寄存器

    2023年04月09日
    浏览(48)
  • Linux学习(嵌入式硬件知识)

           GPU(Graphics Processing Unit,图形处理单元)和 CPU(Central Processing Unit,中央处理单元)是计算机中两种不同的处理器。它们在功能、设计和用途上有所不同。 CPU(中央处理单元): CPU 是计算机中的主要处理器,负责执行计算机程序中的指令。 CPU 主要用于执行通用计算

    2024年04月27日
    浏览(52)
  • 嵌入式学习day22 Linux

    文件IO:     1. lseek        off_t lseek(int fd, off_t offset, int whence);        功能:             重新设定文件描述符的偏移量        参数:             fd:文件描述符             offset:偏移量             whence:                 SEEK_SET    文件开头                 SEEK_CUR

    2024年02月21日
    浏览(39)
  • ARM+LINUX嵌入式学习路线

    嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,大概分3个阶段: 1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式linux系统开发 3、嵌入式linux驱动开发 嵌入式目前主要面向的几个操作系统是,

    2024年02月02日
    浏览(63)
  • 嵌入式学习之C语言指针部分复习

    今天主要把C语言的指针部分再次认真的复习了一下,对于指针的整体框架有了更加深刻的理解,特别要重点区分函数指针,指针函数,数组指针,指针数组部分,对于这部分的应用非常重要,而且C语言指针部分是面试的重中之重,所以要加强练习才行。 今天的学习是充满动

    2024年02月12日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包