由测评者“李红洁”提供
开发板默认安装了ubuntu系统,可以使用如下指令查看系统版本
cat /proc/version
uname -a
lsb_release -a
root@localhost:~# cat /proc/version Linux version 5.4.47-g20182b961 (root@ubuntu18) (gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)) #3 SMP PREEMPT Sun Dec 12 08:32:43 CST 2021 root@localhost:~# uname -a Linux localhost 5.4.47-g20182b961 #3 SMP PREEMPT Sun Dec 12 08:32:43 CST 2021 aarch64 aarch64 aarch64 GNU/Linux root@localhost:~# lsb_release -a No LSB modules are available. Distributor ID: NXP-LSDK Description: NXP LSDK 2012 main Release: 2012 Codename: bionic root@localhost:~#
板子本身安装了GCC工具链
使用以下指令查看gcc版本
gcc -v
root@localhost:~# gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/7/lto-wrapper Target: aarch64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu Thread model: posix gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
串口登录
vi led.c
按键i进入编辑模式
复制黏贴以下代码
按esc
按shift+:进入命令模式
输入wq回车保存
#include#include #include #include int main(void) { while(1) { system("echo 0 > /sys/class/leds/d22/brightness"); sleep(1); system("echo 1 > /sys/class/leds/d22/brightness"); sleep(1); } return 0;
编译gcc led.c -o led
运行./led
可以看到D22以1秒间隔闪烁。
由于系统自带了gcc工具链,所以可以直接在开发板进行开发,而不需要交叉编译开发,非常便捷。
由测试者“jinyi7016”提供
这里用一个串口连接我司产品中的一个模块,模块功能就是把数据通过485进行收发的。
内部预留了串口,直接接在一个USB转串口上,再连接到开发板上。
开发板上使用libmodhus的串口功能进行接收数据,后使用TCP Modbus进行发送。
硬件上的连接如下图:
开发板上识别出来的串口设备为ttyACM0;
所以,生成RTU的连接的函数为: modbus_new_rtu("/dev/ttyACM0", 9600,'N',8,1);
只是把串口的设备名修改一下就可以了。
之后,再新建一个modbus tcp连接服务。
两个modbus,串口的为主机,TCP的为从机(server).
PC上的软件作为client连接开发板。
如下,使用工具连接到开发板成功;
读取开发板上的数据成功。
由于下一级没有连接具体的设备,所以数据都是0;
由评测者李红洁提供。
板子本身安装了python开发环境
使用以下指令查看版本
python --version
root@localhost:~# python --version
Python 3.6.9
电脑和开发板使用以太网连接。这里使用J5的网口对应eno0.
电脑设置对应网卡的IP。我这里是192.168.137.1。
串口登录开发板
设置开发板IP为192.168.137.2.
ifconfig eno0 192.168.137.2
电脑ping开发板,开发板ping电脑。
双向能ping通。如果不能ping通关闭电脑的防火墙。
vi /etc/ssh/sshd_config
添加一行PermitRootLogin yes
允许ssh root用户登录,否则ssh不能以root用户登录。
使用crt ssh登录
输入密码root
右键点击ssh的窗口,点击连接SFTP标签页
lls查看本地目录
lcd跳转本地目录
ls查看远程开饭啊目录
cd跳转远程开发板目录
put 发送文件到开发板
get获取开发板的文件到本地
binary 二进制方式船速和文件推荐使用
将以下2048.py文件导入到开发板
# -*- coding:UTF-8 -*- #!/usr/bin/python2 import random import os, sys
v = [[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]] def display(v, score): print ("%4d %4d %4d %4d" % (v[0][0], v[0][1], v[0][2], v[0][3])) print ("%4d %4d %4d %4d" % (v[1][0], v[1][1], v[1][2], v[1][3])) print ("%4d %4d %4d %4d" % (v[2][0], v[2][1], v[2][2], v[2][3])) print ("%4d %4d %4d %4d" % (v[3][0], v[3][1], v[3][2], v[3][3])) print ("Total score: %d" % score) def init(v): for i in range(4):
v[i] = [random.choice([0, 0, 0, 2, 2, 4]) for x in range(4)] def align(vList, direction): for i in range(vList.count(0)):
vList.remove(0)
zeros = [0 for x in range(4 - len(vList))] if direction == 'left':
vList.extend(zeros) else:
vList[:0] = zeros def addSame(vList, direction): score = 0 if direction == 'left': for i in [0, 1, 2]:
align(vList, direction) if vList[i] == vList[i+1] != 0:
vList[i] *= 2 vList[i+1] = 0 score += vList[i] return {'bool':True, 'score':score} else: for i in [3, 2, 1]:
align(vList, direction) if vList[i] == vList[i-1] != 0:
vList[i] *= 2 vList[i-1] = 0 score += vList[i] return {'bool':True, 'score':score} return {'bool':False, 'score':score} def handle(vList, direction): totalScore = 0 align(vList, direction)
result = addSame(vList, direction) while result['bool'] == True:
totalScore += result['score']
align(vList, direction)
result = addSame(vList, direction) return totalScore def operation(v): totalScore = 0 gameOver = False direction = 'left' op = input('operator:') if op in ['a','A']:
direction = 'left' for row in range(4):
totalScore += handle(v[row], direction) elif op in ['d','D']:
direction = 'right' for row in range(4):
totalScore += handle(v[row], direction) elif op in ['w', 'W']:
direction = 'left' for col in range(4):
vList = [v[row][col] for row in range(4)]
totalScore += handle(vList, direction) for row in range(4):
v[row][col] = vList[row] elif op in ['s', 'S']:
direction = 'right' for col in range(4):
vList = [v[row][col] for row in range(4)]
totalScore += handle(vList, direction) for row in range(4):
v[row][col] = vList[row] else: print ("Invalid input,please enter a charactor in [W,S,A,D] or the lower")
gameOver = True return {'gameOver':gameOver,'score':totalScore}
N = 0 for q in v:
N += q.count(0) if N == 0:
gameOver = True return {'gameover':gameOver,'score':totalScore}
num = random.choice([2,2,2,4])
k = random.randrange(1, N+1)
n = 0 for i in range(4): for j in range(4): if v[i][j] == 0:
n += 1 if n == k:
v[i][j] = num break return {'gameOver':gameOver, 'score':totalScore}
init(v)
score = 0 print ("Input:W(Up) S(Down) A(Left) D(Right), press ." ) while True:
os.system("clear")
display(v, score)
result = operation(v) print (result) if result['gameOver'] == True: print ("Game Over, You failed!") print ("Your total score %d" % (score))
sys.exit(1) else:
score += result['score'] if score >= 2048: print ("Game Over, You Win!!!") print ("Your total score: %d" % (score))
sys.exit(0)
put 2048.py
python 2048.py运行
w s a d回车控制上下左右移动的方向
可以看到使用使用python进行脚本开发非常便捷。
4.1环境准备
首先,本人用的虚拟机跑的,注意需要需要以下几个资源
完美体育·(中国)手机网页版MYD-YA15XC-T开发板接口丰富,几乎把核心板全部接口引出,而且按照功能进行归类排布,非常方便测试。STM32MP1 是 ST 推出的首款 Cortex-A7 +Cortex-M4多核异构 MPU, A7 可以运行 Linux 系统,借助 Linux 系统庞大而丰富的软件组件处理复杂应用,比如 UI 界面、网络应用等, M4 内核的优势就是实时性,因此可以在 M4 内核上运行对于实时性要求严格的应用,比如电机控制、无人机飞控等各种控制算法。 M4 也可以运行各种 RTOS 操作系统,比FreeRTOS、 RTThread 等。
选择:STM32MP151AACX 主控 |
完美体育·(中国)手机网页版MYD-YA15XC-T开发板接口丰富,几乎把核心板全部接口引出,而且按照功能进行归类排布,非常方便测试。STM32MP1 是 ST 推出的首款 Cortex-A7 +Cortex-M4多核异构 MPU, A7 可以运行 Linux 系统,借助 Linux 系统庞大而丰富的软件组件处理复杂应用,比如 UI 界面、网络应用等, M4 内核的优势就是实时性,因此可以在 M4 内核上运行对于实时性要求严格的应用,比如电机控制、无人机飞控等各种控制算法。 M4 也可以运行各种 RTOS 操作系统,比FreeRTOS、 RTThread 等。
选择:STM32MP151AACX 主控 |
程序配置PACK:
MYD-JX8MPQ开发板核心芯片MIMX8ML8CVNKZAB/MIMX8ML8DVNLZAB, 是基于高性能四核 ARM®Cortex®-A53 64 位 RISC 核心, 商业级频率最高 1.8GHZ,工业级1.6GHZ。 Cortex-A53 处理器的每个 CPU 核心包括一个 32 kbyte L1 指令缓存,一个 32kbyte L1 数据缓存,一个 512kbyte 二级缓存。设备还嵌入了 Cortex®-M7 32 位 RISC核心,最高可工作在 800MHz 频率。 Cortex-M7 核心功能是浮点单元(FPU)单精度,支持Arm®单精度数据处理指令和数据类型。 Cortex -M7 支持一套完整的 DSP 指令和一个内存保护单元(MPU)增强应用程序安全性。
圆周率是一个定值且又是一个无理数,无线不循环,圆周率是指圆的周长跟直径的比值,它还等于圆的面积跟半径平方的比值。一个圆的内接多边形,边数大于3时,当边数趋向无穷大时,多边形的面积的极限就是圆的面积。
Linux系统中,我们可以安装bc计算器用来计算pi值(π圆周率),如果系统中没有bc命令,需要先进行安装:
Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。
(一))文件系统 gpio 操作
在应用层通过Sysfs访问Gpio子系统,首先需要操作接口,先进入/sys/class/目录,看看系统中有没有“/sys/class/gpio”这个文件夹。Linux系统的sysfs机制已经在系统路径下/sys/class/gpio注册了相应的节点,通过读写该节点下的文件就能轻松的完成GPIO输入输出配置以及引脚状态的获取。
输入指令: