
嵌入式学习
文章平均质量分 63
嵌入式Linux,
BSP软件工程师
展开
-
memcpy执行效率测试,无效测试
#include <stdio.h>#include<time.h>#include<math.h>#include <unistd.h>clock_t start,stop;//clock_t是clock()函数返回的变量类型double duration;//记录被测试函数运行时间,以秒为单位#define MAXK 1e7/*被测函数最大重复调用次数*/void computationtime(double start,doubl原创 2021-04-19 13:59:45 · 578 阅读 · 0 评论 -
嵌入式软件面试(基础题)总结,不断更新
C/C++/各种基础啊1. static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域2. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。2) 不存在指向空值的引用,但是存在指向空值的指针。3. 描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性4. 全局...原创 2018-10-23 17:34:21 · 5065 阅读 · 0 评论 -
Linux 内核自旋锁
为什么需要内核自旋锁?现在很多CPU都是几核几核的了,如果有一个变量A,CPU-X正在访问,突然CPU-Y也过来访问他,这时候就可能出现问题,因为这个A非常重要,可能导致系统崩溃,中断异常等。我们来看之前说的TP驱动里面的代码void gtp_irq_enable(struct goodix_ts_data *ts){ unsigned long irqflags =...原创 2018-10-10 09:45:57 · 847 阅读 · 0 评论 -
printf 宏 调试技巧
1 前言printf调试是嵌入式调试的基本手段,而且是非常重要的手段,我认为相比单步调试更加有用有效,特别是单片机之后跑系统,单步调试效率更加低下了,我们在工作遇到bug的时候,我们第一时间就想知道那些该死的日志有没有保存下来,这样好让我们程序员装逼一波把问题解决。printf宏定义调试非常重要,有些日志在开发的时候才需要打开,发布的时候需要关闭,但是在代码上又需要保留下次调试,所以我们在...原创 2018-10-10 08:43:10 · 2340 阅读 · 0 评论 -
Linux内存管理(最透彻的一篇)
摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨重点讨论的内容,无论市...原创 2018-10-16 11:14:52 · 3104 阅读 · 0 评论 -
shell自动生成的文件有一个问号的后缀
写了一个脚本,自动处理一个文件。 rm -f session.logrm -f linkwget ftp://hostname/f:/ddn/session.logegrep '^N[[:digit:]]|^D[1-4]' session.log >>linkegrep -c '^N[[:digit:]]|^D[1-4]' session.log >>lin...转载 2018-10-16 11:01:24 · 3180 阅读 · 0 评论 -
我的师傅是风清扬
1 珍惜那些处处帮助你的人国庆假期就要过去了,国庆这几天一直在考虑一个问题(先保留是什么问题),也咨询了几个比较信任的朋友,都没有得到肯定的答案。回家路上跟了一个大哥哥(陈哥),是我小舅子的朋友,在2003年就开始来深圳打拼,用他的话说,当时穿着一双拖鞋来深圳,现在搞了一个小厂子,虽然没有出人头地,但是也没亏掉什么 ,说话中带着惋惜和骄傲。陈哥从30号认识到5号回到深圳,我们接触...原创 2018-10-09 14:12:37 · 1380 阅读 · 0 评论 -
关于CPU Cache -- 程序猿需要知道的那些事
关于CPU Cache -- 程序猿需要知道的那些事本文将介绍一些作为程序猿或者IT从业者应该知道的CPU Cache相关的知识文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢钧轶(cenalulu) 本文原文地址:http://cenalulu.github.io/linux/all-about-cpu-cache/先来看一张本文所有概念的一个思维导图...转载 2018-10-15 15:35:48 · 520 阅读 · 0 评论 -
adb 抓取日志到指定文件,文件命名为当前电脑时间
需求产生原因我们保存日志的时候,需要把日志文件名命名为当前的系统时间,方便我们以后查看日志。命令如下adb logcat &gt; "%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%-%time:~3,2%-%time:~6,2%.txt"命令解析输出为:2016-11-09 15-40-16.txt说明:在windows 的cmd命令...原创 2018-10-12 15:11:56 · 3906 阅读 · 0 评论 -
串口UART串行总线协议
前言看了下我的博客阅读量最大的文章,竟然是这篇文章,所以想重新整理下正文1 串口UART1.1硬件连接UART可以理解为可以用一线总线就可以完成数据的传输,连接图如下VCC 用来给设备提供电源的,如果设备有电源,可以省略TX 顾名思义 就是CPU发送数据给设备-对应接设备的RXRX 顾名思义 就是CPU接收设备的数据-对应接设备的TXGND 地线的作用,做嵌入式...原创 2018-09-14 20:13:30 · 5190 阅读 · 0 评论 -
SPI协议详解
1.SPI协议简介1.1.SPI协议概括 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用...原创 2018-09-19 15:15:27 · 150034 阅读 · 11 评论 -
I2C总线传输协议
简介I2C(Inter-integrated Circuit)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它只需要两根信号线来完成信息交换。I2C最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100kHz、7-bit标准地址。1992年,I2C的第一个公共规范发行,增加了400kHz的快速模式以及10-bit扩展地址。在I2C的基础上,1995年Inte...原创 2018-09-18 22:54:44 · 4768 阅读 · 3 评论 -
Windows环境下的安装gcc
Windows具有良好的界面和丰富的工具,所以目前linux开发的流程是,windows下完成编码工作,linux上实现编译工作。为了提高工作效率,有必要在windows环境下搭建一套gcc,gdb,make环境。MinGW就是windows下gcc的版本。下载地址http://sourceforge.net/projects/mingw/files/MinGW/进入网址后点击下载...原创 2018-11-03 23:05:04 · 1076 阅读 · 1 评论 -
unix dos mac 文件格式不同导致问题
问题:运行该脚本出现/bin/sh^M: bad interpreter: No such file or directory 解决:错误中脚本文件的一个非常可能的原因是DOS格的, 即每一行的行尾以\r\n来标识, 其ASCII码各自是0x0D, 0x0A.能够有非常多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的在Terminal中输入例如以下:...原创 2018-11-01 10:15:33 · 565 阅读 · 0 评论 -
git 命令汇总
瞎扯最近有几个留言想让写下git的内容,git是一个工具,主要是用来管理码农的代码的,理由很简单,码农写的代码太多,自己都不知道可能哪里出现了Crash。Linux也是因为git的出现,可以让世界上越来越多的人维护修改bug,现在的linux内核才发展的越来越快。 git基础我觉得,要学习git,首先要了解几个概念working dir 这个是工作区,我们一般都处在工作区中...原创 2019-01-03 11:38:56 · 563 阅读 · 0 评论 -
重入的问题
抛出个问题有一个定时器,定时时间是1秒,然后里面有一个执行函数,里面的函数有时候执行500毫秒,有时候执行2秒,如果是这样的话,有没有问题,如果有问题,要怎么解决?先说上面中断的问题我之前写过一篇文章,专门说中断的,我又想起来之前说的那个重入和不重入的问题了,我们做软件设计的一定要考虑这个问题,就比如中断,因为工作很久了,遇到了很多芯片,了解有些CPU可以重入,有些芯片设计的中断不可以重入,...原创 2019-07-03 23:05:10 · 1577 阅读 · 0 评论 -
esp32 coredump分析
写文章的原因网上很多人写了 esp32 的coredump 分析,好吧,我看了下,都是从网上摘抄的,根本跑不通,我想写一个给大家有用的。官网文章https://esp-idf-zh.readthedocs.io/zh_CN/latest/api-guides/core_dump.html实例分析1、首先保存 coredump 信息类似下面的,都是一些字符sC4AAA4AAABkAQA...原创 2019-05-18 21:22:49 · 1708 阅读 · 0 评论 -
check-lxdialog.sh: line 3: $'\r': command not found
问题make all make[1]: Entering directory '/cygdrive/d/AiThinkerIDE_V0.5/cygwin/home/aithinker/project/esp-idf/tools/kconfig'/cygdrive/d/AiThinkerIDE_V0.5/cygwin/home/aithinker/project/esp-idf/tools/k...原创 2019-05-18 12:26:53 · 2014 阅读 · 0 评论 -
ESP32 分区介绍
软件设计分区表如上图是正常运行需要的分区,一个系统的正常运行是需要这么多分区的。分区表,我们软件默认配置的分区表如下# Espressif ESP32 Partition Table# Name, Type, SubType, Offset, Size, Flagsnvs,data,nvs,0x9000,16K,otadata,data,ota,0xd000,8K,phy_init...原创 2019-05-21 10:56:18 · 3219 阅读 · 0 评论 -
图文|Android 使用Thread 和多线程使用互斥锁
如何使用一个线程//定义一个线程private SendThread mSendThread = null; /** * 发送线程实体 */ private class SendThread extends Thread{ public void run() { } } //实例化线程 if (m...原创 2019-03-04 11:45:27 · 937 阅读 · 0 评论 -
有意思的BAT CMD if while循环 整型自增
引言我们开发过程中经常遇到写bat进行测试的,需要对这方面有些基础,我给出个示例,也方便自己以后工作做参考。@echo offtitle qifa:loop rem setlocal enabledelayedexpansion set /a a+=1 echo loop %a% @choice /t 1 /d y /n >nul rem 判断等于1,启动ping if...原创 2019-03-06 17:23:58 · 3574 阅读 · 0 评论 -
中断下半部机制-softirq-Tasklet-工作队列
中断上半部和下半部在中断上半部,就是中断处理函数里面,是关中断的,所以为了快速执行,不能放太多的处理代码,只能执行非常短,这就衍生出了中断下半部。下半部主要是为了方便执行大量和本次中断相关的代码。中断下半部的三种机制下半部上下文顺序执行保障softirq中断随意,同类型都可以在不同处理器同时执行,代码执行效率非常高tasklet中断用softirq机制实现...原创 2019-03-05 09:55:35 · 590 阅读 · 0 评论 -
浪漫情人节|C语言画心型
1.前言新年第一天上班,先祝大家新年快乐,巧的是,今天刚好又是情人节,所以想了下用C实现画心形符号~2.心形符号数学公式http://mathworld.wolfram.com/HeartCurve.html这个网站里面的公式,我随便挑了一个公式如下(x2+y2−1)3−x2y3=0 (x^2+y^2-1)^3 - x^2y^3 = 0 (x2+y2−1)3−x2y3=03.代码如...原创 2019-02-14 11:52:43 · 2994 阅读 · 2 评论 -
不废话~就是抽奖~
不废话就是抽奖在公众号回复-抽奖- 获取抽奖二维码参与抽奖原创 2019-02-25 08:41:30 · 617 阅读 · 0 评论 -
机器人&&循迹小车资料
前言我记得在大学的时候,参加电子比赛,我们有一个题目是平衡小车项目,那个对基础要求还是比较高的,总结了一些平衡车机器的资料,希望对大家有帮助。正文关注公众号,回复【机器人资料】获取...原创 2019-01-21 19:51:55 · 1218 阅读 · 0 评论 -
排序算法时间复杂度、空间复杂度、稳定性比较
排序算法分类排序算法比较表格填空排序算法 平均时间复杂度 最坏时间复杂度 空间复杂度 是否稳定 冒泡排序 :————-: :—–: :—–: :—–: 选择排序 :————-: :—–: :—–: :—–: 直接插入排序 :————-: :—–: :—–: :—–: 归并排序...转载 2018-09-18 17:21:59 · 463 阅读 · 0 评论 -
gcc c语言编译流程
1前言 最近群里讨论个C语言的小程序,看起来都不是很难,但是大家对答案有争论,所以想讨论编译原理,做嵌入式要对编译原理有一定的了解,所以转了这篇文章。我们之前讨论的问题如下代码#include #include #define WEIQIFA 0;int main(void) { int i = WEIQIFA; ...原创 2018-09-13 12:13:50 · 1539 阅读 · 0 评论 -
安霸SPI 剖析
最近在搞单片机和A5S的SPI通信1、A5S是跑的是ITRON的系统、有自己相关的SPI API函数2、单片机这边也是可以熟悉了,发送,接收什么的,我都可以自模拟出来3、但是问题是,A5S上面的API函数的工作是如何的,我一直没怎么弄清楚4、一般的SPI通信,不都是主机提供时钟信号吗?可是我用A5S发送数据的时候,用示波器量时钟引脚,并没有看到有方波5、不知所解呀最原创 2013-05-08 16:50:02 · 2215 阅读 · 0 评论 -
图像正确(相当于这个小项目就要结尾了)
到这里这个小项目就要进入尾声了1、在其中遇到了很多问题、也听了部门前辈的指点、有的人说的正确、有的人说的不沾边、这时候真的是需要自己去衡量哪个人说的才是自己所需要的、2、关于TVP5150的配置和GPGTFT的配置、刚开始的时候都不知道到底是哪一个配置会出了什么问题、后面我在TVP5150的手册里看到了一个例子的配置、我照着这个例子去配置、然后我就确保了TVP5150的配置是正确的原创 2013-04-14 14:53:56 · 1750 阅读 · 9 评论 -
SPI、I2C、UART三种串行总线的原理、区别及应用
SPI协议解析,链接如下https://blog.youkuaiyun.com/weiqifa0/article/details/82765892I2C协议解析,链接如下https://blog.youkuaiyun.com/weiqifa0/article/details/82765349串口UART串行总线协议https://blog.youkuaiyun.com/weiqifa0/article/detai...原创 2013-04-24 16:11:38 · 70997 阅读 · 5 评论 -
GPG96244QS1屏驱动难题
void Gpg_Master(unsigned int Data){ unsigned int temp = 0b1000000000000000; Master_SCK=1; ENABLE_244QS1();//初始化前使能片选 _delay(10); DISABLE_244QS1(); Master_SCK=0; //Generate SCK Clock do { Ma原创 2013-04-10 17:35:26 · 1170 阅读 · 0 评论 -
屏上有一层紫色(正在找原因)
注:1、这两天一直在找这个原因、5150控制成功、屏驱动成功、可是为什么屏上面有一层紫色的覆盖住了呢、非常的让我感到不解2、如果什么也不输入、解码出来的信号在TFT上显示是紫色、我现在是不怎么清楚是屏的原因还是解码的原因原创 2013-04-12 09:40:33 · 1457 阅读 · 1 评论 -
TVP5150真正的驱动起来了
几个注意的地方:1、驱动TVP5150所需要的是IIC来驱动、IIC的时序一定要搞清楚、还有IIC的读写时序、 刚开始的时候并尝试从里面读寄存器、没有成功、可能有些寄存器不能读、2、硬件一定要检查清楚,TVP5150用到的电源有3.3V 1.8V、用电压表测量好、3、检查晶振是否起振、我们这次晶振不起振的原因是PWN口没有置高电平、其他的硬件连接一定看一下手册上面的电路图4、还有T原创 2013-04-10 17:29:14 · 10079 阅读 · 11 评论 -
gpg96244qs1屏驱动起来了
驱动屏需要注意的地方:1、首先一定要保证通信、当然电路图什么的肯定是确保是好的1.1 这个屏用的是SPI通信、验证通信的方法是读寄存器里面的一个默认值,如果读出来的是原来的默认值的话,就说明是正确的、用示波器看SPI线的数据线、有一个高阻的地方、这里一定要注意、读数据的时候,要先写入一个读的地址、写完的时候,下一次来一个下降沿 就会有数据在SPI 数据线上、(为了防止高阻不可读,时序什么的原创 2013-04-10 23:22:08 · 1125 阅读 · 0 评论 -
5150晶振不起振
1、这是一个比较让我费解的问题、今天从相机输入了PAL信号、发现根本没有解码出来,然后检查检查,发现晶振不起振解决中。。。1、换一个板子,看是不是这个板子出了问题、2、换一个起振电容问题解决了、原因是TVP5150的PDN脚应该输入高电平的、硬件连接的时候没有接上高电平、或者这个脚用单片机来控制,这样也要配置来控制PDN脚原创 2013-04-09 21:13:18 · 1508 阅读 · 1 评论 -
成功驱动5150用HT68F30
用了自己写的起动总线和停止总线,终于可以成功// PROGRAM : 4-17.c 2011.0521// FUNCTION : I2C Master/Slave Mode Demo Program By Steven// Note : Configuration Option Setting--// SIM Function = Ena原创 2013-04-08 20:38:21 · 1583 阅读 · 0 评论 -
IIC驱动5150遇到麻烦
搞了一天还是没有搞出来、几个问题1、不加镜头、可以检测到应答信号(这个真的是无法解决的大BUG啊)2、反之,加上镜头、检测不到应答信号(自己猜想是不是加上镜头的时候造成电流或者电压变大或者变小了)能不能检测到应答信号通过查看PC4引脚是否输出高电平来检验void CheckACK(void){ unsigned short i=200; SDAC=0; SDA=1;// 先由主机把数据线拉原创 2013-04-08 19:04:35 · 1100 阅读 · 0 评论 -
HT68F30控制GPG96244QS1 TFT液晶屏
资料上显示是SPI总线控制、在SPENB由高变底的时候起动传输、由低到高的时候停止转输、并且传送的时候先传高位的数据、现在没有效果出来(正在找问题)没有效果的意思是:1、LCD屏没有图像、只有背光在亮2、还没有找到一个寄存器或者一种方法来让LCD屏上显示一种颜色或者图像void Gpg_Master(unsigned short Data){ //unsigned shor原创 2013-04-08 10:21:04 · 1589 阅读 · 0 评论 -
SPI单片机发送ARM接收
发送:void MCUSPI_WRITE_ADDRESS_DATA(unsigned char data){ unsigned char i=0; ENABLE_SPI_CS();//???????? _delay(10); DISABLE_SPI_CS(); Master(data); ENABLE_SPI_CS();//???????? _delay(10);}原创 2013-05-07 17:17:13 · 1600 阅读 · 2 评论 -
MID开发笔记
RK:1 服务器:192.168.1.402 登录服务器命令:ssh softwin@192.168.1.40 softwincn;界面在places ->connect to server,选择ssh,输入地址跟密钥即可。3 git中删除分支 git branch -D xxx,git log可以查看更新的信息,修改前pull一下代码,原创 2013-06-04 20:09:46 · 3923 阅读 · 3 评论