ubuntu stm,ubuntu移植到arm步骤
很多朋友对于ubuntu stm和ubuntu移植到arm步骤不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
配置交叉编译环境@Ubuntu20.04+opencv4.7.0
配置Ubuntu20.04环境以进行交叉编译,目标板为stm32MP157@arm架构(双核A7+M4)。
首先,确保虚拟机VMwareSphereClient17运行于本机X86-64架构上,并安装Ubuntu20.04操作系统。
其次,准备资源包,包括opencv4.7.0与opencv_contrib4.7.0。
接着,下载并安装交叉编译工具链gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf,以支持ARM架构的编译。
在终端输入`uname-a`命令,验证系统显示为ARM架构,这表示交叉编译过程成功。
配置完成后,进行交叉编译的资源包,编译结果适用于目标板stm32MP157的arm架构。
对比本地编译后,资源包将遵循X86-64架构,用于在本机上运行。
Ubuntu下Qt串口助手接收中文乱码问题
在Ubuntu中使用Qt开发串口助手,接收单片机(STM32 F103)发送的中文时遇到乱码问题。经过排查和交流,发现问题关键在于波特率一致性以及正确处理接收的数据类型。在发送字符串时,应使用fromUtf8函数将字节流转换为字符串;若发送数值,则需根据数据包协议解析字节流,再转换为字符串显示。
在单片机端,使用Keil开发环境时,需注意编码一致性,确保与接收端编码匹配。对于Ubuntu下的Qt代码,使用readAll()函数获取字节流后,应将其转换为GBK编码的字符串。这一转换过程需通过Unicode编码进行,即GBK、GB2312等编码与UTF8之间通过Unicode才能相互转换。
Qt编码知识指出,Qt常用的编码有UTF-8和GBK。UTF-8是Unicode的8位编码格式,支持全球字符,通用性强。GBK则基于GB2312,兼容GB2312标准,但编码规则不同。GBK、GB2312与UTF8之间的转换,必须通过Unicode进行。
编码转换逻辑如下:GBK、GB2312→ Unicode→ UTF8;UTF8→ Unicode→ GBK、GB2312。在简体中文操作系统中,ANSI编码通常代表GBK/GB2312,Unicode(UTF-16)则将所有字符表示为2个字节。
解决步骤包括:确认波特率一致;根据发送内容类型,正确处理字节流;通过编程将字节流转换为GBK编码的字符串。在编码转换过程中,需了解不同编码的表示方式,以及如何在Qt中进行编码转换。
测试结果显示,中文显示已恢复正常,但仍存在小部分乱码现象,需进一步测试以排除其他潜在问题。总结经验,关注编码一致性、数据类型处理以及编码转换逻辑,是解决此类问题的关键。
怎么在ubuntu下开发stm32
环境:
ubuntu 13.10
stm32f103zet6
一、STM 32 GCC安装
stm32属于arm cortex-m系列thumb指令集,所以给arm用的arm-none-eabi就可以了,首先是下载
下载地址:
下载其中的gcc-arm-none-eabi-version-linux.tar.bz2
解压到目录会产生gcc-arm-none-eabi的文件夹
把该编译器添加到用户的环境中:
在最后一行添加:
因为之前有添加过树莓派的编译器了,所以实际上是这样的:
两个编译器环境中间用冒号隔开;
注销后测试:
可以查看到该编译器的版本,就表示可以了。
二、工程环境的建立
新建个工程文件夹及其目录
下载安装官方库:
1、stm32的寄存器不像51 avr等单片机那么少,自己写写库,背背寄存器就可以了,所以ST公司提供了官方的库。为了避免重复造轮子,就直接采用其库,库版本为STM32_USB-FS-Device_Lib_V4.0.0,这个库多了usb支持,下载的话到st官网搜索stm32f10x就有了。
2、解压把解压好的文件夹复制到刚才新建的libs里面.
3、在工程根目录下新建Makefile.common文件,这个为通用makefile。
编译库文件:
进入libs文件夹,新建Makefile:
编译该库:
就会在lib目录下生成libstm32.a,这个就是编译好的静态库了。
建立工程编译ld文件
这个ld文件,为在编译时告诉编译器把代码放到什么地址,根据芯片的内存以及flash容量不同有所调整。
在工程根目录下新建linker.ld文件
根据芯片型号不同,选择相应的RAM FLASH大小。
在工程根目录下新建Makefile文件:
在src里面添加测试源码,主要是startup.c以及main.c。
然后进入工程主目录下make就好了。