
嵌入式开发
SevenFighting
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[从0到1搭嵌入式工程]重置的实现
一般会有一个重置的按钮,用户在长按之后,设备执行重置操作。 在某一个线程中,每隔一秒去检测硬件上重置按键是否被按下(由驱动提供接口),如果检测到两次或者以上次数被按下,就可以认为是长按,去执行重置的操作。注意判断时间也不能过长,如果硬件上也有重置,比如硬件自身在长按6S之后,硬件自身就会重置,也就是硬件的这个按键的信号也会被重置,如果在软件上我们判断7S才认为是长按,那么就会出现软件...原创 2018-05-02 15:51:22 · 404 阅读 · 0 评论 -
嵌入式 Linux 的一般开发过程
一般嵌入式 Linux 的开发过程, 无论是 ARM, PowerPC 或 MIPS 的处理器, 都必需经过以下的开发过程:1、 创建 Linux 交叉编译环境;2、建立 Bootloader;3、移植 Linux 内核;4、建立 Rootfs (根文件系统);5、安装驱动程序;6、安装软件;对照一下自己。...原创 2018-07-13 17:54:25 · 2785 阅读 · 0 评论 -
[从0到1搭嵌入式工程]IP地址传递和保存常规做法:IP和整数转换inet_addr&inet_ntoa
为什么要转?常规IP是字符串,转成整形保存,可以节省空间,最重要是可以提升检索效率。将IP地址或IP段转换成数字保存在数据库中,可以提高检索速度。要知道,在数据库中数字类型的要比文本类型的检索速度快得多,从而提高网站性能。原理:ip地址的每段可以看成是一个0-255的整数,正好是无符号的8bit就能放下,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成无符号整数。举例:一个ip地址为1...原创 2018-07-13 18:55:28 · 369 阅读 · 0 评论 -
[从0到1搭嵌入式工程]局域网自动发现功能,苹果Bonjour/mdnsResponder移植
在局域网内通信,就必须知道对方的IP地址和端口,苹果开源的mdnsResponder,就是利用mdns组播协议,通过服务域名,来获取相应ip地址的一种方式。比如我们有一个摄像头,在联网的情况下,同一个局域网下的app想发现这个摄像机,并和摄像机建立联系。这样一个需求,需要摄像头调用mDNS_Register,通过传参告知mdns库,在指定的port上注册一个did._ipcxx._tcp....原创 2018-08-10 15:50:31 · 8539 阅读 · 9 评论 -
[从0到1搭嵌入式工程]常用加密方法之XOR异或加密
使用的加密方法, 密码获取方法, AES XOR base64 HMAC md5 RSA 在整个项目开发过程中,总是会用到需要加密的地方,下面的文章就说一说常见的几种,这里介绍XOR异或加密算法。异或运算: 相同为0, 不同为1。运用异或运算的特点,两次异或之后,会变成原来的值本身。因为算法简单,容易被破解,用在简单的加密上很方便,重要信息不用XOR算法。什么时...原创 2018-09-26 14:12:58 · 505 阅读 · 0 评论 -
[从0到1搭嵌入式工程]监测外网连接情况gethostbyname
设备要想实时监测外网连接情况,肯定是需要在外网上有一个点,可以让你一直监测设备与这个点之间的连接情况。这个点,就肯定是处在外网中的服务器。1,DNS服务器180.76.76.76 (百度DNS)、 114.114.114.114(国内移动、电信和联通通用的DNS)、8.8.8.8(google DNS)可以用定期ping DNS服务器的方式监测与DNS的连接情况,任意一个联通,即为连接...原创 2018-09-21 19:44:49 · 280 阅读 · 0 评论 -
[从0到1搭嵌入式工程]常用加密方法之Base64编解码及代码实现
Base64概念:严格来讲Base64不是一种加密算法,是为了让不可显示的数据转换成可显示的字符串的编码方法。“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法”帖一段别人的博客:“什么是“可打印字符”呢?为什么要用它来传输8Bit字节码呢?在回答这两个问题之前我们有必要来思考一下什么情况下需要使用到B...原创 2018-09-26 15:07:37 · 429 阅读 · 0 评论 -
[从0到1搭嵌入式工程]常用加密方法之AES加解密及密码生成和获取、cyassl库
在项目中,遇到两个终端之间的传输,就会遇到数据加密的问题,比如使用P2P协议音视频和命令的传输。这时,对于加密方法的选择,往往使用AES就可以满足需求了。下文中还会介绍密码的生成和获取。AES: 高级加密标准。是一种对称分组加密算法。 对称的意思是加密端和解密端使用相同的密码。分组的意思是把数据分成一小块一小块,进行加密。AES加密相对于DES(数据加密标准),速度更快,安全级别更高,...原创 2018-09-26 19:15:42 · 1510 阅读 · 0 评论 -
[从0到1搭嵌入式工程]嵌入式应用层判断SD卡是否存在,获取大小和剩余空间
1,判断是否存在 如果sd卡设备存在, 在生成/sys/block/mmcblk0/device/cid文件,存放sd卡的cid信息, 同目录下type文件可以判断卡类型,如果设备只支持sd卡,就不需要判断类型了。 在代码中使用popen执行命令:cat /sys/block/mmcblk0/device/cid 2>/dev/null 。获取返回值,如果有返回值,则认为sd...原创 2018-10-19 17:16:41 · 1370 阅读 · 0 评论 -
ALSA音频播放和录制 underrun和overrun错误
pcm播放的时候,接口snd_pcm_writei 返回 -EPIPE,为underrun 录制音频的时候, 接口snd_pcm_readi 返回 -EPIPE, 为overrun 使用ALSA架构的驱动程序,在实际开发使用过程中,比较常见的错误有-EPIPE,也就是-32?为什么会出现呢?肯定是系统内部不和谐了!EPIPE的错误在播放时出现就是因为驱动buffer没有...原创 2018-10-17 11:03:43 · 12794 阅读 · 3 评论 -
[从0到1搭嵌入式工程]嵌入式编译工具链命名规则&四大架构&openwrt简介
对于固件应用开发来说,编译工具链都是sdk供应商提供的,不同的项目,就有了多种编译链,不同的编译链有什么区别呢?例如 arm-linux-gnueabihf-xx,mipsel-openwrt-linux-xx 。交叉编译工具链,从授权上,分为免费授权版和付费授权版。免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译制作),第二是 Codesourcery,第三是Linora。收费版...原创 2018-07-13 17:40:55 · 803 阅读 · 0 评论 -
[从0到1搭嵌入式工程]嵌入式常用开源库
在嵌入式开发业务的过程中,总会遇到一些功能,会用到常规的开源库。1:zlib, 数据压缩解压库, 遇到上传数据时,如果太大,可以使用zlib从srcbuf中压缩到dstbuf,再做一个base64就可以明文传输了。同时,也提供了gzip文件的读写接口, 可以直接将数据压缩到gz文件中去,或者从gz文件中解压缩出来。2:zbar,条形码、二维码信息扫描读取, 当二维码包含中文时,会乱码,可以修改zb...原创 2018-07-10 19:44:29 · 872 阅读 · 0 评论 -
[从0到1搭嵌入式工程]设备与服务器后台通信的搭建
通过什么协议, 需要什么依赖,加密, 做什么通信,心跳保持,前后兼容问题。1,设备与服务器后台通信,使用libcurl库, 使用http、https协议, 根据server API 构造URL,与server进行交互、请求、上传、下载等。2,用HTTP还是HTTPS,使用HTTP协议,传输的文本会以明文的形式在互联网上传输,可能会被截取,查看, 使用HTTPS协议,消息会被加密后发送到网络上,中间...原创 2018-05-09 16:06:16 · 1417 阅读 · 0 评论 -
[从0到1搭嵌入式工程]设备信息和配置信息的保存
对于一个嵌入式的工程, 设备信息是指出厂时固化在设备上的信息,类似手机的IMEI,会有DID等可以认证的信息,特点是,在出厂时只写入一次到flash中,永远不丢(升级不丢、重置不丢)。 配置信息是指用户通过某一种方式,可以对设备进行配置, 比如配置wifi, 设置开关等, 这些信息掉电不能丢失,要保存在flash上, 用户升级固件以后,也能正常使用,只有在用户重置设备以后,配置信息才恢复为...原创 2018-04-25 18:56:21 · 644 阅读 · 0 评论 -
[从0到1搭嵌入式工程]libcurl常用的请求方法总结
常规信息GET请求:POST请求, PUT请求,下载, 上传原创 2018-05-10 15:19:20 · 460 阅读 · 0 评论 -
[从0到1搭嵌入式工程]编译打包和升级的实现
工程编译:我们以nand分区,分为bootloader、kernel、rootfs、homefs为例。rootfs是linux系统必须的文件目录系统和工具的集合,挂载在跟目录/下,homefs可以认为是我们自己的应用程序、自己的依赖库,放在homefs中,放在/home目录中。那么编译打包的过程,就是把固件运行所需的全部文件,打成一个包, 在升级时,由升级程序把这个包拆开,把相应的文件保存在对应的...原创 2018-05-04 20:29:17 · 1133 阅读 · 0 评论 -
[从0到1搭嵌入式工程]日志系统的实现
嵌入式开发的log输出,一种是直接输出到标准输出,通过串口可以看到, 一种是把日志存在内存文件中, 在一般嵌入式开发中, 这两者是并存的。标准输出通过 printf()函数, 或者通过vfprintf(stdout, format, args)输出到标准输出。对于放在文件中的日志,因为日志的频繁性, 需要单独的线程或进程对文件进行读写, 同时对log文件进行大小限制、循环覆盖等管理。下面记录一种实...原创 2018-05-07 15:24:49 · 3747 阅读 · 1 评论 -
[从0到1搭嵌入式工程]对shell命令的调用
在linux的应用程序中,调用system()和popen()可以执行shell命令。system()命令是串行执行,是阻塞的,等到shell执行结束后,返回, system不能直接返回执行结果。popen()是平行的,不等执行完成,函数就会返回, 继续往下执行。popen会返回一个文件指针,可以对这个文件指针进行读和写,会作用到sh中的文件中。所以对于需要阻塞的命令,可以直接调用system()...原创 2018-05-07 17:49:58 · 257 阅读 · 0 评论 -
[从0到1搭嵌入式工程]启动固件
linux 内核启动之后,会执行1号用户进程init,然后由它来启动后面的任务,挂载文件系统,启动服务等,init会执行init.rc文件, 最后由init.rc执行到我们的init.sh脚本。在init.sh中,继续创建需要的目录,挂载文件系统,在启动真正的home_m之前,判断是否升级。 执行ifconfig wlan0 up启动wifi , ulimit -c unlimited 生成co...原创 2018-05-07 19:01:12 · 372 阅读 · 0 评论 -
[从0到1搭嵌入式工程]模块间通信的搭建
各模块(进程)之间,采用消息队列的方式通信。整体通信采用一个调度转接点,其他进程只和这一个转接点进程进行通信的方式进行, 如果发给其他进程的消息,也通过调度进程进行转发, 调度进程起名字叫Dispatch Process。在dispatch程序刚启动时,需要对消息队列进行初始化,因为它是中转进程,需要和所有进程建立消息队列。dispatch_mqfd = mq_open("/mq_dispatch...原创 2018-05-07 20:03:44 · 644 阅读 · 0 评论 -
[从0到1搭嵌入式工程]uboot使用tftp升级固件
一,windows 下载工具 tftpd.exe, 运行选tftp Server选项卡, 确认本机的IP和固件所在的目录。二,设备通过网线和PC连接在同一个网段,设备串口连接PC。 (根据设备而定),在启动时,有选择项:这时, 串口按 2, 然后输入 Y 输入本设备的IP,随便输,保证和其他不冲突。 输入tftpd server IP, 输入固件 firmware.bin。 ...原创 2018-07-10 17:57:30 · 3948 阅读 · 0 评论 -
C语言字节对齐规则总结
原始链接源自 https://www.cnblogs.com/clover-toeic/p/3853132.html , 从上面博客中学习总结得到下面的文章。 不同硬件平台,对存储空间的处理不一样,比如不能放奇数地址,不能任意存放等,为了适应不同的架构,在C语言层面上,就可以执行对齐从而独立于硬件平台。 此外,是由于对内存的存取效率问题,如果存放的地址不对齐,取一个4字节的数据,可能会需...原创 2018-10-23 16:16:30 · 8595 阅读 · 0 评论