嵌入式开发

嵌入式开发之C++基础学习笔记1--综合比较HelloWorld示例

陌路散爱 提交于 2019-11-30 05:41:18
选择C++的理由: 1)C++语言是由C语言扩充而来。它是一门混合型的语言,既支持传统的结构化程序设计,又支持面向对象的程序设计,这使得C++非常流行。它在编程中支持面向对象。因此,它比C更适合人们的思考方式,并且比C要安全、可靠、有效。但是它并不像Java那样全面实现类的使用,这使得它很灵活,能够适应多种场合的需要。 2)C++是编译语言,性能良好,效率更高。它不像Java、PHP、ASP等语言,需要在运行时转换为机器码,或者读一条语句执行一条。它直接被编译为机器可识别的机器码。 3)C++编写的程序独立性好。只要C++编译时产生的机器码不依赖外部的动态链接库,C++就可以在不需要安装额外程序的情况下,移动到运行同样操作系统的其他机器和微处理器上。而移动Java程序时需要先安装Java运行期库。这是C++语言成功流行的一个重要原因。 4)C++语言应用极为广泛。尤其在底层编程和系统级编程上更是C++的传统优势应用。在数据库和多媒体方面,C++又以其卓越的稳定性而赢得了荣誉。 与C编写代码不同,C++关于HelloWorld这么一个简单程序有很多变化 第一个例子: jellonwu @jintao :~/Desktop$ vim test1.cpp #include <iostream> using namespace std; int main() { cout<<"Hello

嵌入式之路_1_当然是搭建开发环境啊

点点圈 提交于 2019-11-29 19:41:09
就想和你聊聊LOL与地下城的那些事 白话文: 大家都在PC机上玩过LOL,地下城吧! 在开发这类软件时,可以直接在PC机上编辑、编译、调试软件,最终发布的软件也是在PC机上运行。 那么,对于嵌入式的开发,最初的嵌入式设备是一个空白的系统,需要通过主机为它构建基本的软件系统,并烧写到设备中。 另外,嵌入式设备的资源并不足以用来开发软件。 所以需要用到 交叉编译开发模式 :在主机上编辑、编译软件,然后在目标板上运行、验证程序。 1 搭建软件环境 主机Linux操作系统的安装 安装、配置、启动FTP、SSH或NFS以及Samba(企业中用得比较多,用来主机与虚拟机的挂载) 安装交叉编译工具链 (具体搭建查阅相关资料,本文仅提供体系) //-----------------------嗯哼!是不是觉得很简单呀,那就跟着我踏上嵌入式的不归路吧---------------------- 来源: https://blog.csdn.net/qq_42642034/article/details/100900029

嵌入式操作系统2

怎甘沉沦 提交于 2019-11-29 17:10:13
嵌入式操作系统:可移植;(开源)嵌入式操作系统分类:商业/免费:vxworks、wince、Linux、ucossil 实时/非实时;在规定的时间里完成规定的动作(Vxworks、ucosil)Linux:GPL协议、POSIX标准、GNU计划(unix)开源社区:github 版本管理工具:git+github(两个小时)Linux发行版:redhat、Ubuntu、deepinLinux安装:虚拟机+Linux:1.windows/Linux之间切换更容易;2、容易修复虚拟机:通过软件的方法模拟一台PC机 Linux的使用(命令)—30个命令1、Linux和windows定位:(开发人员、普通用户)(命令效率更高)2、Linux命令:用户管理、文件操作、进程管理、网络管理、设备管理、系统管理(1000多个)—120个向日葵/55Hz(xshell)用户管理:su、sudo;(adduser、password、usermod);group【root localhost】 a-普通文件 d-目录文件 c/设备文件(c:字符设备;b:块设备)P:管道文件 s:共享文件f:堆栈文件Chmod touch cat diff 软链和硬链接(lin) gedit gcc cd ed mk 来源: https://blog.csdn.net/qq_45596267/article

嵌入式开发之C基础学习笔记10--总结

人走茶凉 提交于 2019-11-29 13:38:36
嵌入式C总结 一.学习编程语言的一些建议 1)多动手 学习编程唯一方法就是编写调试程序。看再多的书,效果也比不上设计调试一个简单程序 2)养成良好的编程习惯 3)注意细节 4)了解开发环境 在学习编程语言的同时,也许要了解编程语言的开发,使用环境。如硬件平台(51,MSP430,PC),操作系统(nCOS,linux,DOS),集成开发环境(Keil C,Borland C)等 5)多看书,勤思考 二. 可移植性 我们建议类似下面的类型定义来替代 typedef unsigned char BOOLEAN; typedef unsigned char INT8U; typedef signed char INT8S; typedef unsigned int INT16U; typedef signed int INT16S; typedef unsigned long INT32U; typedef signed long INT32S; typedef float FP32; typedef double fp64; 在变量无需用到负数时,明确定义其为unsigned char或者是INT8U 在变量可能用到负数时,明确定义其位singed char或者是INT8S 三. 参考书籍和资料 1) 《C程序设计语言》 2) 《C Primer Plus中文版》 3)《C和指针》 4

第四季-专题4-嵌入式文件系统

别等时光非礼了梦想. 提交于 2019-11-29 04:19:47
专题4-嵌入式文件系统 建立根文件系统目录与文件 目录和目录中的文件就是文件系统。 (1) 创建目录 #mkdir rootfs #cd rootfs #mkdir bin dev etc lib proc sbin sys usr mnt tmp var #mkdir usr/bin usr/lib usr/sbin lib/modules (2) 创建设备文件 Linux系统中的绝大多数文件,都是以文件的方式来存储的。Linux系统的中的dev文件专门用来存放这些文件。 #cd rootfs/dev #mknod -m 666 console c 5 1 #mknod -m 666 null c 1 3 (3) 加入配置文件 将压缩包拷贝到这节课的目录下 #tar etc.tar.gz #mv etc/* …/root/etc/ -rf (4) 添加内核模块 内核的一部分文件在内核中,另一部分功能的实现,需要内核模块的实现,现在将内核模块的路径指向我们的创建的根文件系统。 #cd …/linux #make modules ARCH=arm CROSS_COMPILE=arm-linux- #make modules_install ARCH=arm INSTALL_MOD_PATH=…/rootfs (5) 编译busybox Busybox: 嵌入式开发中的瑞士军刀

嵌入式开发常遇的问题收集汇总(持续更新)

ぃ、小莉子 提交于 2019-11-28 20:10:37
STM32部分: 1、 问题: 在调试公司项目的时候,将使用 DMA2 的 5 通道采集 adc3 的子工程代码移植到总工程代码中,发现程序在进入到主循环的时候总是卡死。 寻找问题: 使用mdk DEBUG仿真,停止仿真程序会停在 HardFault_Handler 函数里的死循环while(1)中。这说明STM32出现了硬件错误。最后发现总工程中也用到了 DMA2 的通道 5 ,是用在 uart4_TX 上的,在硬件资源分配上产生了冲突,最后导致程序卡死。 解决办法 :使用 ADC3 多通道采集的 非DMA 方式, 让出DMA资源 。 2、 问题: 使用 MDK 写程序并编译出现 ..\Vehicle\pedal.c(166): error: #18: expected an expression 寻找问题: 最后在网络上找到了问题所在 Misc Controls 在MDK中默认是C90,将其改为C99即可解决 解决办法 :如下图所示添加--c99 3、 问题: 定义结构体导致出现内存大小异常问题 4、 问题: 在调试别人的程序过程中发现程序卡死。 寻找问题: 经过仿真发现程序总是在启动文件的 DMA2_Channel2_IRQHandler DMA2_Channel3_IRQHandler DMA2_Channel4_5_IRQHandler B . ENDP ALIGN

嵌入式开发中常用的命令

只谈情不闲聊 提交于 2019-11-27 14:05:27
grep命令 用法:grep [option] PATTERN [FILE...] 例如: 在内核目录下查找包含“request_irq”字样的文件 grep "request_irq" * -R 注:*表示查找当前目录下的所有文件、目录,-R表示递归查找子目录; 在内核的kernel目录下查找包含“request_irq”字样的文件 grep "request_irq" kernel -R 注:kernel表示当前目录下的kernel子目录下查找,-R表示递归查找它的所有目录; find命令 用法:find [-H] [-L] [-P] [path...] [expression] 例如: 在内核目录下查找文件名包含“fb”字样的文件 find -name "*fb*" 在内核的drivers/net目录下查找文件名中包含“fb”字样的文件 find drivers/net -name "*fb*" 注:drivers/net必须是find命令的第一个参数; tar命令 该命令具有打包、解包、压缩和解压缩等4种功能,常用的压缩、解压缩方式有两种:gzip和bzip2; 一般而言,以".gz"、"z"结尾的文件是用gzip方式进行压缩的,以".bz2"结尾的文件是用bzip2方式进行压缩的,后缀名中有"tar"字样时表示这是一个文件包; tar命令有5个常用的选项: 选项 功能 c

嵌入式开发日记(9)——多线程与socket通信

空扰寡人 提交于 2019-11-27 03:15:41
尝试用多线程,socket网络编程,心跳检测机制,实时绘图,丢包检测机制,校验位检测,超时重传机制, 数据库存储等功能优化项目 多线程与socket编程: 参考链接: https://blog.csdn.net/qq_39687901/article/details/81531101 Python多线程socket通信 https://www.runoob.com/python3/python3-multithreading.html Python多线程 首先,需要明白的是socket的accept和recv这两个方法是阻塞线程的。这就意味着我们需要新开线程来处理这两个方法。 具体的程序流程大概是这样的: 1.新开一个线程用于接收新的连接(socket.accept()) 2.当有新的连接时,再新开一个线程,用于接收这个连接的消息(socket.recv()) 3.主线程做为控制台,接收用户的输入,进行其他操作 也就是说, 服务端需要为每一个连接创建一个线程。 服务端(上位机)功能: 1 创建接口 2 接收多客户端数据 3 分别记录到本地txt import serial import socket # 导入 socket 模块 from threading import Thread import os import time ADDRESS = ('127.0.0.1',

嵌入式开发环境搭建随记

五迷三道 提交于 2019-11-26 09:30:47
1、桥接网络和NAT网络的不同 为了让我的主机和虚拟机相互ping通,我设置了虚拟机和主机为同一个网段,NAT网络模式,但是发现主机能ping通虚拟机,虚拟机ping不通主机,百度了才知道,要更 改为桥接模式,两者终于能ping通了,但是随后发现,在window上用cuteftp上传文件到linux失败,提示权限不足,发现只要把linux的文件夹的权限修改下就行了。 2、ubuntu下ftp服务配置 (1)安装vsftp软件: sudo apt-get install vsftpd (2) 修改vsftpd的配置文件。此类配置文件通常位于 /etc 目录下。 sudo gedit /etc/vsftpd.conf (3) 重新启动vsftpd: sudo service vsftpd start 3、ubuntu下nfs服务配置 (1)安装Ubuntu nfs Ubuntu上默认是没有安装Ubuntu nfs服务器的,因此我们首先安装Ubuntu nfs服务器端:sudo apt-get install nfs-kernel-server,在一些文档中,提出安装nfs的客户端nfs-common,以及端口映射器portmap,但其实这是没有必要的,因为在安装nfs-kernel-server时,apt会自动为我们把它们安装好 (2)修改nfs的配置文件 Ubuntu

图像识别VPU——易用的嵌入式AI支持深度学习平台介绍

久未见 提交于 2019-11-25 23:01:42
公司玩了大半年的嵌入式AI平台,现在产品进入量产模式,也接触了很多嵌入式方案,有了一些心得体会,本人不才,在这里介绍一下一款简单易用的嵌入式AI方案——Movidius Myriad 2 VPU(MA2450) 和 Myriad X VPU(MA2485)。这里本人重点提示:简单易用的嵌入式AI。现在好多家半导体厂商已经推出嵌入式AI平台,比如华为海思今年4月份发布的Hi3559A,这个样品超过100美金/片,集成寒武纪AI核(遗憾不是最新的版本,因为最近寒武纪又发布最新的AI版本,同时还集成大名鼎鼎Cadence的 4核DSP);赛灵思Xilinx的FPGA—— Zynq 7020,ZU2CG开发难度大,价格不菲,还有其他家的ARM+FPGA方案也不便宜,开发难度也不小;英伟达的GPU——JETSON TX2,TX2核心板英伟达自己生产,价格太贵,不适合产品小型化生产;TI 的TDA2x系列和DAVINCI系列最新的DM505,以及后续的版本,专注辅助驾驶ADAS,他的64bit浮点DSP C66X+EYE也支持深度学习(不要小瞧这个EYE,深度学习方面一个EYE可比2个C66X 浮点DSP还牛),不过功耗太高,软件资源也不好搞到,海掏买美国D3公司DEMO板价格不菲,而且没技术支持开发周期过长,价格也不便宜。鉴于本公司的资源(小公司),我们选择了Intel的Movidius