自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (4)
  • 收藏
  • 关注

原创 .s19 文件转换为 .hex 文件简易方法

在汽车电子开发中,可能会遇见编译后产生的是 .s19 文件,与我们常见的.hex .bin文件不同,有时候我们需要使用hex文件,那么如何将.s19文件转换为常见的文件格式呢?

2022-09-23 19:04:43 4789 2

原创 undefined reference to 问题的一种解决方法

问题描述:今天在移植mcal中的部分代码时,然后编译中,在链接的步骤里面,遇见了"undefined reference to xxx",未定义的函数被引用的问题,实际上那个函数是被定义了的,不过那个函数比较特殊,是一个被extern inline修饰的定义在头文件中的函数,是extern inline 函数。这种函数可以有两个定义的地方,一个是头文件中,另一个是c文件中,不过是这两个函数的内容必须一模一样,如果其他地方引用这个函数时,是以函数指针的形式进行引用,那么就需要在c文件中也有一个一模一样的定义,

2022-08-22 17:57:10 6418

原创 bootloader学习笔记---第二篇

一、链接地址与跳转这里讨论第一篇文章中提到的第二种情况,即第二种常见的情况就是app烧写在flash上,app应该在ram内存里运行,app或者是bootloader需要把app拷贝到内存ram中去,如果是bootloader拷贝的,那么bootloader要跳转到内存ram中去执行app;如果是app自己把自己复制到内存中去的,那么bootloader直接跳转到app的位置就可以了。 这里有三个问题,1、谁把app从flash复制到ram中去?2、复制到哪里?3、如果bootloader要跳转到ram中去

2022-07-13 18:32:58 2919

原创 bootloader学习笔记---第一篇以stm32为例

本系列笔记主要记录我学习汽车电子的bootloader程序开发中做的笔记,我学习的芯片是英飞凌的aurix系列的tc377,tc234,tc222,这主要是涉及到两块的东西,驱动程序和协议栈(我学习的是uds协议),前面几篇笔记是我学习的stm32的bootloader。bootloader的目的是OTA,即为了给板子上面的...

2022-07-04 18:36:07 7044 1

原创 linux应用开发基础9-多线程编程

9.1、为什么要用多线程编程?本文参考韦东山老师的视频(【第4篇】嵌入式Linux应用开发基础知识_哔哩哔哩_bilibili),我们使用视频学习,1是快,2是可以深入的解决某些难点。假定我们有一个英语播放器,需要实现按键按下音乐暂停和正常播放音乐,第一种情况单纯使用while(1)循环两个任务,一个任务检测按键,另一个任务播放音乐,那么在播放音乐的时候就无法监测到按键按下,看起来就是反应迟钝。第二种情况使用多进程编程,可以理解为有多个main函数,那么就可以有两个main函数,分别处理这两

2022-05-02 20:44:45 556

原创 linux应用开发基础8-网络通信

8.1 网络通信概述在一般的网络书籍中,网络协议被分为5层,如下图所示:应用层:它是体系结构中的最高层,直接为用户的应用进程(例如电子邮件、文件传输和终端仿真)提供服务。在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议,DNS,SNMP等等。运输层:负责向两个主机中进程之间的通信提供服务。运输层主要使用以下两种协议:(1) 传输控制协议TCP(Transmission Control Protocol):面向连接的,数据

2022-04-29 22:46:43 1112

原创 Linux应用开发基础7-输入系统应用编程

输入系统框架及调试Linux系统为了统一管理输入设备,实现了一套能兼容所有输入设备的框架:输入系统。驱动开发人员基于这套框架开发出程序,应用开发人员就可以使用统一的API去使用设备。我们需要了解api的使用,内核中输入子系统的框架、数据流程,来解决开发工程中碰到的硬件问题、驱动问题。输入系统框架如:驱动程序上报的数据含义有三项重要内容:type:哪类?比如EV_KEY,按键类code:哪个?比如KEY_Avalue:值,比如0-松开,1按下,2长按如果我们想表示触摸屏上面一个触点.

2022-04-29 16:17:56 974

原创 Windows系统遇到不能打开要写入的文件怎么办?----重启电脑即可

我今天在安装一款软件名叫四川省CA互联互通驱动3.0的软件时,遇见了如下问题,不能打开要写入的文件:解决方法:重启电脑,重新安装即可解决。在解决这个问题的中途我试了很多办法,比如杀毒软件扫描电脑是否有病毒,关闭杀毒软件重新安装软件,重新到官网下载软件,将安装路径文件名改为英文,将安装路径放在c盘之外的盘,检查文件管理员是否有写入权限等等方法,都无效。因此写了这篇博客作为记录,重启电脑解决百分之九十的问题。...

2022-04-14 15:33:46 1770

原创 linux应用开发基础6-文字显示

一、字符的编码方式我们在显示字体时,需要关注两方面的内容,一显示我们要什么字符,二这些字符是要显示什么格式

2022-03-18 11:40:30 1711

原创 linux应用开发基础4-文件I/O

本篇知识属于linux系统编程相关知识。如果从事linux应用的人,推荐两本书----1、linux/UNIX系统编程手册----这本书适合初学者。2、UNIX环境高级编程第3版---这本书适合当字典。在linux系统中,一切都是“文件”:普通文件、驱动程序、网络通信等等。所有的操作都是通过文件IO来操作的,所以,我们要掌握文件操作的常用接口。上层的应用程序开发人员不需要关心驱动层的程序或者是硬件的逻辑,只需要专注于业务。驱动程序的开发人员需要提供标准的函数接口给应用层的人员使用。这些文

2022-03-11 15:10:44 684

原创 linux应用开发基础2-gcc编译器使用

gcc编译器使用c程序要经过预处理,编译,汇编,链接才能变成可执行文件。图1把.h文件和.c文件合并成一个文件叫预处理,预处理就是找到头文件,展开宏;预处理之后的文件变成汇编码叫编译,对于语法错误是在编译过程中发现的;汇编码变成机器码叫汇编,机器码变成汇编码叫反汇编;多个机器码文件以及一些补充文件变成app就是链接。通过命令gcc -o hello hello.c -v 我们就可以查看到具体的编译过程。gcc这命令帮我们把这些过程全部做掉了。gcc -E -o hell

2022-03-11 10:47:33 435

原创 C语言使用----GDB调试

1、gdb退出命令:q。安装命令 yum -y install gdb2、如果希望编译后的程序能够可以被调试,编译时要加-g的参数,-g把book的文件信息加到生成的book例如gcc -g -o book book.c在命令提示符下面输入gdb book就可以调试book程序了3、基本调试命令命令命令缩写 命令说明set args 设置主程序的参数。...

2022-03-10 15:54:39 2811

原创 Linux应用开发基础1-交叉编译hello程序

hello程序#include <stdio.h>int main(int argc, char **argv){ if (argc >= 2) printf("Hello, %s!\n", argv[1]); else printf("Hello, world!\n"); return 0;}

2022-03-10 14:37:39 442

原创 C语言函数记录

1、memset初始化字符数组函数。Memset(str , 0, sizeof(str))2、strcpy字符串复制函数Strcpy(str,"hello");寻找库函数对应的头文件,命令添加是man strcpy3、随机数函数(1)、stdlib.hVoid srand(unsigned int seed); //随机数生成器的初始化函数srand (time(0))Int ran...

2022-03-09 15:32:19 371

原创 linux程序烧写步骤(仅做记录)

SPL 如果只验证SPL,此时把boot_spl.bin烧写到SPI flash的0x4000地址,上电启动SPLUBOOT u-boot.bin即为烧写可执行文件Bootloader烧写 1.编程器烧写:把SPI flash取下来用编程器烧写 此处以flypro为例进行说明 选择对应的Flash芯片,擦除Flash 装载烧写文件,选择bootloader.bin 注意:非XIP启动模式要设置从flash的0x400...

2022-03-08 16:24:10 1731

原创 linux程序烧录1-龙芯板卡(非通用,仅做记录)

编译uboot、内核、文件系统烧写uboot、内核、文件系统串口驱动程序编译uboot命令:make distcleanmake swls1b_configmake编译内核://此处还有一个命令,用于生成内核的版本号,好像可以不要make编译文件系统./mkyaffs2image ./rootfs/ ./rootfsimg1c.binrootfs为文件系统所在的目录,rootfsimglc.bin为生成的文件系统文件ping 192.168.0.254 //预设好的i.

2022-03-08 16:21:37 454

转载 linux驱动开发(转载自正点原子)

一、Linux驱动开发思维1、Linux下驱动开发直接操作寄存器不现实。2、根据Linux下的各种驱动框架进行开发。一定要满足框架,也就是Linux下各种驱动框架的掌握。3、驱动最终表现就是/dev/xxx文件。打开、关闭、读写、。。。4、现在新的内核支持设备树,这个是一个.dts文件,此文件描述了板子的设备信息。二、Linux驱动开发分类linux驱动分为三大类:1、字符设备驱动;最多的;以顺序的、字节的传输。2、块设备驱动,存储,以固定大小长度来传输和转移资料3、网络设备驱动,一个

2022-03-07 16:00:48 2200

原创 linux学习笔记3-vi/vim

vi/vim1、打开或创建文件(vi 文件名vi book.c)2、vi的三种模式(命令行模式、插入模式和替换模式)在命令行模式下,任何键盘输入都是命令,在插入模式和替换模式下,键盘输入的才是字符插入模式和替换模式也合称为编辑模式。3、vi的常用命令Esc 从编辑模式切换到命令行模式。i 在光标所在位置前面开始插入a 在光标所在位置后面开始插入o 在光标所在位置行的下面开始插入空白行。O 在光标所在位置行的上面开始插入空白行。I 在光标所在位置行的行首开始插入A 在光标所在位置

2022-03-07 14:55:33 273

原创 linux学习笔记2-常用命令

常用命令(大部分是管理员权限)1、开机2、关机(init 0或halt)和重启(init 6或reboot)3、清屏(clear)4、查看服务器地址(ip addr)5、查看时间(date)。设置时区为中国上海(cp/usr/share/zoneinfo/Asia/Shanghai /etc/localtime)。设置时间(date -s "2020-01-01 12:35:23")。6、全路径文件名(/usr/etc/readme.txt)。/ 是(根)目录。文件名是由路径+文件名

2022-03-07 14:50:27 299

原创 linux-学习笔记1

在linux系统中一切皆文件

2022-03-07 14:46:44 411

原创 8、嵌入式C语言轻量级程序架构

## 程序架构实践才是硬道理。了解程序架构的概念和作用了解单片机常用的程序架构掌握轻量级程序架构的设计思想掌握轻量级程序架构的内核实现原理掌握轻量级程序架构的内核编写本文博客主要参考无际单片机编程(https://b23.tv/PXO5IMQ)...

2022-03-03 19:51:02 3294 2

原创 嵌入式开发中遇见的问题1-printf函数

问题描述:今天在开发中遇见一个问题,对裕太车通的phy芯片进行读写寄存器时,中间调用mdiobb_read函数读取0x1F寄存器,mdiobb_read函数中有一条语句printf("mdiobb_read apb_phy = 0x%x reg =0x%x reg_access_data =0x%llx \n",apb_phy,reg,reg_access_data);,因为觉得打印起来碍事,然后屏蔽了这条printf代码后,再次使用 mdiobb_read函数,发现功能不正常了。我在网上查...

2022-03-03 15:02:22 407

原创 7、C语言回调函数使用

程序架构的核心理念和需求掌握回调函数的作用掌握回调函数的程序编写掌握回调函数在产品中的应用一个好的程序架构至少要达到以下要求:硬件层和应用层的程序代码分开,相互之间的控制和通讯使用接口,而且不会共享的全局变量或者数组。用专业术语描述就是可移植性、可扩展性。在51单片机写程序时,基本上一个.c文件解决,包括寄存器配置,产品功能。到了stm32时,我们会把不同的外设功能,比如led,按键,串口等外设功能代码分别写在不同的.c文件里,然后统一用函数接口去调用它,比方说控制一个LED灯亮,直接在led.

2022-03-02 19:38:23 6547 3

原创 嵌入式datasheet-英语-中文-1

嵌入式datasheet-英语-中文-10x1E--------extended register’s address offset register----扩展寄存器的地址偏移寄存器描述-------it’s the address offset of the extended register that will be write or read.它是将被写入或读取的扩展寄存器的地址偏移量。0x1F--------extended register’s data register.-------

2022-03-02 15:54:40 487

原创 linux-1-单片机程序对比Linux程序

linux-1-单片机程序对比Linux程序单片机在单片机的程序里面可以直接读写寄存器。驱动层和app层分层没有明显的界限,只是一个人为分层的结果。单片机中的cpu可以根据一个地址直接访问到外设(gpio)或者是存储单位(RAM)上面。Linuxcpu根据一个地址去访问gpio,但是内存管理单元mmu会判断cpu处于什么模式下面,如果是处于用户模式,mmu会禁止cpu去访问gpio,如果是管理者模式,就可以去访问gpio。Linux系统在app层里面无法直接读写寄存器,在app下面调用驱动程序

2022-03-01 20:30:59 850

原创 5、C语言队列与应用

队列掌握队列的原理和作用掌握队列的写法掌握队列在产品中的应用队列的原理队列原理其实就像一个管道,如果我们不断往管道里面塞乒乓球,每个乒乓球在管道里就会排列一条队形。先进去的乒乓球就会先出来,这个就是队列的先进先出的规则。图1球从左边进去,进去的动作就是入列,然后进去的球在管道里排成一个队列,这个叫队列缓存,说白了就是数组,那么这里存了5个球就相当于是buff[5];这样的意思,最右边出来的1号球就是最早进去的球,出来的这个动作叫出列,所以遵循了先进先出的规则。队列的作用队列最主要的作用就是

2022-03-01 18:26:58 1022

原创 2、C语言枚举的使用--枚举有什么用?

枚举1、掌握枚举的相关概念2、掌握枚举的几种用法3、掌握枚举在实际产品中的用法什么是枚举我对枚举的理解就是把一些固定的值—列举出来分别起个名字,比如说给1取个名字叫Ture,0取个名字叫False,Ture和False都是表示同一个类型的数据,比如说都是代表逻辑的对错,这里用51单片机的IE中断使能寄存器来举一个例子。图1枚举的用法1、直接定义枚举值,然后给普通变量赋值图22、定义一个带名称的枚举图33、定义枚举别名图4#include <stdio.h>enum

2022-03-01 18:22:23 2650 2

原创 3、C语言指针使用

指针1、掌握指针的概念和用法2、掌握指针与数组之间的关系3、掌握指针指向的指针4、掌握如何使用指针变量做函数参数5、掌握如何使用指针函数6、掌握如何使用数组指针函数指针的作用运用指针可以有效地表达一些复杂地数据结构,比如系统地动态分配内存、消息机制、任务调度、定时器等等。掌握指针可以使你的程序更加简洁、紧凑、高效。那么在单片机领域,如果是做稍微大一点的项目,需要把每一个功能做出模块化,硬件驱动层和应用层分别独立运行,即使更换单片机型号也不用修改应用层程序,即移植性非常强,这些都离不开指针。甚

2022-03-01 18:12:33 761

原创 4、C语言结构体使用---链表

**结构体**1、掌握结构体的概念和用法2、掌握结构体数组和结构体指针3、掌握包含结构体的结构体4、掌握结构体搭建链表方法5、掌握结构体及链表在产品应用场景结构体的概念比如说学生的信息,包含了学生名称、学号、性别、年龄等信息,这些参数可能有些是数组型、字符型、整型、甚至是结构体类型的数据。虽然这些都是不同类型的数据,但是这些都是用来表达学生信息的数据。结构体的用法1、struct 结构体名称 访问方法: 结构体变量名.成员{成员1;成员2;};

2022-02-28 19:26:22 3113

原创 Win11家庭版/专业版使用VMWare15.5虚拟机电脑蓝屏问题(使用联想电脑)

Win11家庭版/专业版使用VMWare15.5虚拟机电脑蓝屏问题(使用联想电脑)

2022-02-07 16:59:48 9377 6

原创 龙芯LS1B处理器使用EJTAG烧录程序步骤,烧录u-boot.bin作为测试(linux系统)

板卡:ls1b处理器为cpu的板卡系统:fedora系统驱动:ejtag-debug-v3.25.19.tar.gz时间:2021年12月22日经过实测,下面的步骤可以在linux系统下面烧录u-boot.bin成功1、板卡先断电2、链接好ejtag、串口3、打开串口,波特率1125004、打开ejtag软件sudo ./ejtag_debug_usb -ta、执行:source configs/config.ls2k

2022-01-11 19:37:05 1704

原创 应届生常见面试问题

**应届生常见面试问题**1、你有什么想问的?问题一:请问我是否和本公司签约?我和公司签的合同是否是劳动合同?(研究所有可能会签劳务派遣合同)问题二:请问公司是否是外包公司?(如果是外包公司,那么不推荐去哈)问题三:请问公司中我的岗位具体做的是什么业务?问题四:请问公司社保和公积金缴纳的基数是多少?问题五:请问公司是否提供住宿或早午餐?基本工资是多少?如果是年薪制,每个月具体发多少?问题六:请...

2021-06-30 21:07:31 525

原创 基于STM32的智能门禁卡片(开题报告)

**基于STM32的智能门禁卡片(开题报告)**一、研究目的和意义目前可穿戴设备不断发展,而可穿戴设备的目的,就是让我们的生活变得越来越方便。不用再携带各种IC卡片、也不用动不动就掏出手机,而由于安全原因,一般的智能手环,手表都不可以复制加密卡片,这导致了我们生活中不可避免的带着不少卡片,比如学校的饭卡,公司的工牌,小区的门禁等等。如果我们不小心丢失了卡片,这将会给我们带来不小的麻烦。因此本设计...

2021-05-19 20:49:31 7955 2

原创 STM32按键长按、短按实现不同功能函数

这里的函数接口只需要输入GIPOX、GPIO_Pin_X(这里X是根据你的按键的硬件电路来的),我这里长按是亮红灯,短按亮绿灯,在使用过程中,可以替换为其他功能,比如长按翻下一页,短按翻上一页等功能。这适用于只有一个按键,但是却可以实现两个功能的需求。 /* * 函数名:Key_Scan * 描述 :检测是长按or短按函数,长按执行LED_RED函数,短按执行LED_GREEN * 输入 :GPIOx:x 可以是 A,B,C,D或者 E * GPIO_Pin:待读取的端口位

2021-04-07 17:25:20 5818

原创 K210开发板学习笔记(三)——STM32+K210+SD卡实现人脸识别(完整K210代码)

更新日记:2022年4月26日 更新了串口通信部分的内容,本文写的略为粗糙,恐有不当之处,希望大家不吝赐教。人脸识别一、MaixPy IDE开发参考博主晨少hc的博文(https://blog.csdn.net/HuangChen666/article/details/113995079)来实现人脸识别功能,我用的硬件是亚博智能的K210开发板,在配置工程中有几步和这个博主的不一样,需要注意。所需要的文件有:模型文件),脚本文件,ide需要的bin文件...

2021-04-05 15:43:16 39725 98

原创 STM32实战项目中BUG集锦(C语言)

1、在野火HC05蓝牙模块中,systick定时器模块使用中,如果设置为1us中断一次,那么中断函数中只能完成几句话,不然1us很快又会产生中断,导致程序锁死。并且systick中断使能必须在延时函数中才能开启。2、当STM32程序跑飞,将无法使用仿真器下载程序,需要改变boot启动,更换跳帽,下载程序后,在换回跳帽。3、用蓝牙将数据发送到手机端,或者是WIFI模块上传数据到阿里云平台,均需借用c语言的库sprintf函数sprintf(dispBuff,"Temperature: %d.%d ",D

2021-04-05 14:30:26 799 2

原创 C语言中float和duoble类型中取出整数部分和小数部分,并转换为Int类型整数

#include <stdio.h>int main(){float n=23.34578;int i,j,m;m=(int)(n100.0);//扩大一百倍i=m/100;//变量n的整数j=m-i100;//变量n的后两位小数printf("%d,%d\n",i,j);//输出23,34return 0;}

2021-04-04 23:45:34 1441 2

原创 亚博智能K210开发板学习笔记(二)——GPIO

时间:2021-02-03 地点:在家K210开发笔记一、温故:1、昨天说windows下有两种利用C语言开发的编译环境,经过今天的了解,知道了,还有利用panthy语言开发的的Maixpy编译器。2、从网上了解到勘智为K210提供了一系列的API供调用,有点相当于STM32中的库函数开发,不过K210就没有STM32的寄存器手册,不能通过寄存器进行开发。并且官方提供了中文的库函数开发手册,以及官方IDE的使用手册,这么一看,好像K210比32简单。二、新知识GPIO:经典操作外设GPIO,两个

2021-02-26 10:15:38 5046 1

原创 亚博智能K210开发板学习笔记

学习日期:2021年2月1日 地点:在家 目的:记录一下,防止忘记一、K210开发第一步当然是安装开发环境辣,K210具有多种开发环境,在windows下有VSCode开发环境和官方IDE两种方式。1、VSCode开发环境搭建亚博有完整的安装教程,包括安装包和视频教程,建议观看视频安装(https://www.yahboom.com/build.html?id=3824&cid=406)。总结,需要安装VSCode、make、交叉编译器 toolchain、烧录文件kflash(使用这个文

2021-02-01 22:07:33 8873 8

原创 基于STM32的斯特林驱动小车论文

基于STM32的斯特林驱动小车论文【内容摘要】:根据“第九届上海市大学生工程训练综合能力竞赛”的规则和要求,设计了一种采用斯特林技术和自动控制技术,自主设计并制作一台可将液态乙醇燃料转换为机械能的、方向自动控制的自控车。本小车底板和支架均采用3D打印,小车经过反复调试,具有良好的按规则的循迹和避障,轨迹有较好的准确性和重复性。本文主要介绍了小车的设计和电控部分就行了分析。【关键词】: 斯特林发动机 3D打印 循迹避障 STM320 引言根据“第九届上海市大学生工程训练综合能力竞赛规则”的要求,设

2021-01-31 21:32:52 4028 2

龙芯1B EJTAG在windows环境下的下载工具,ejtag-debug-cygwin-v3.8.2.rar

龙芯1B EJTAG在windows环境下的下载工具,亲自测验可用,附有详细操作ejtag-debug-cygwin-v3.8.2步骤,驱动需要另行安装哦。

2022-01-06

Allegro Cadence 常用PCB封装库

Allegro Cadence 常用PCB封装库。1、常用的PCB封装库文件,里面的.dra文件可以用PCB Editor打开。2、常用的直插元件、贴片元件、BGA封装、LQFP封装都有。3、文件解压后为208MB。

2021-08-27

寻迹避障—超声波修改.rar

主要采用舵机控制小车前进方向,代码本身仅供参考。 1.给超声波模块接入电源和地,电源为5V,3.3V有时会出错。 2.给脉冲触发引脚(trig)输入一个长为20us(最小为10us)的高电平方波,ECHO设置为PA4,TRIG设置为PA5。 3.输入方波后,模块会自动发射8个40KHz的声波,与此同时回波引脚(echo)端的电平会由0变为1;(此时应该启动定时器计时) 4.当超声波返回被模块接收到时,回波引脚端的电平会由1变为0;(此时应该停止定时器计数),定时器记下的这个时间即为超声波由发射到返回的总时长。 5.根据声音在空气中的速度为344米/秒,即可计算出所测的距离。

2021-04-05

步进电机s型加减速算法、精准定位脉冲程序

非常流行的步进电机STM32控制代码,S型加减速,代码中可以随时获取电机已走脉冲(实际就是当前位置),可以通过给定步数走指定距离,里面有相关程序说明。

2019-10-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除