自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (2)
  • 收藏
  • 关注

原创 杭州创业者沙龙活动第一期来咯

杭州创业者沙龙”系列活动是由加值社主办,每月1期。杭州创业者沙龙的出现,旨在为浙江地区创业者提供一个分享经验和交流知识的平台,帮助他们在创业过程中更好的成长,促进创业社区网络的建立,为创业者提供和分享更多的机会和资源,同时也可以宣传创业,提高公众对创业的认识和支持。

2023-05-17 15:27:16 180

原创 Gerrit部署(Ubuntu+Gerrit+Nginx)

Gerrit部署1 Gerrit简介Gerrit是一个基于web的代码评审工具,它基于Git版本控制系统,由Google内部编写用于代码评审管理。Gerrit旨在提供一个轻量级框架,用于在代码入库之前对每个提交进行审阅。Gerrit提供了一个临时区域,将本地提交与远程仓库隔离开,开发人员将‎‎更改上传到Gerrit,在它们被审阅通过前并不会直接上传到远程仓库。要了解Gerrit如何帮助强化开发人员的工作流程,请考虑如下一个典型的项目。该项目有一个中心源存储库作为项目内容的权威副本,例如Git版本控制系

2022-02-17 10:41:50 3389 1

原创 从0到1学会Buildroot根文件系统构建

需要注意的是,以下文档内容由于自己水平有限,避免不了错误。所以要保持一个思考的头脑,遇到问题能够尽快解决并且积累经验。1、 buildroot简介官网首页对buildroot的定义,和特点有非常明确的介绍。1)、buildroot的宗旨为了让嵌入式linux开发更容易。2) 、管理一切!为嵌入式设备生成交叉编译工具链,文件系统,交叉编译bootloader和kernel image。3) 、易用!所有配置通过像linux一样的menuconfig,gconfig和xconfig。4)、支持丰富的

2022-02-17 10:15:03 3113

原创 RV1109--LCD黑屏问题

RV1109–LCD黑屏问题1、问题描述平台:RV1109需求:兼容一块10.1寸mipi的LCD屏(1218-A101NL66-28K),是rv1109的第10块屏幕,使用lcd_index=10(lcd_index涉及到我司兼容LCD方式)来标志这块屏。问题:设备开机后,在uboot阶段显示正常,启动kernel后屏幕逐渐熄灭变黑。2、问题根因在uboot的时候,LCD屏的初始化序列正确,故能在uboot阶段正常显示。但是在kernel阶段由于错误地使用timimg参数,导致屏幕逐渐熄灭变黑

2022-01-12 09:49:42 708

原创 devres机制(devm__XX函数族)之GPIO接口

路径:/drivers/gpio/devres.cAPI接口描述devm_gpiod_get(struct device *dev, const char *con_id, enum gpiod_flags flags)功能:初始化gpio设备参数:@dev --gpio设备 @con_id --gpio节点名 @flags --gpio初始化标志 返回值:gpio_desc结构体

2021-10-19 18:08:52 1149

原创 devres机制(devm__XX函数族)之概述

devres机制(devm__XX函数族)之概述devres机制,其实看这个名字的就知道大概了-设备资源(device resource),用来设备资源的申请与释放。但是为什么要有这个机制呢,因为我们在编写设备驱动的时候,往常我们在probe函数里先申请设备资源,然后在申请出错时和在remove里需要将申请的设备资源释放,以前是分开操作的,这也造成驱动开发工程师可能会忘记释放设备资源,从而造成严重的内核问题。追溯源码,我总结了devm相关的接口,将会在接下来的篇幅描述,但只是简单的列出来,大家感兴趣可以

2021-10-19 18:03:44 682 4

原创 buildroot之package重新编译

【遇到的问题】在rk1109平台里,我需要添加一个WiFi的package,进而实现将我在内核的编译出来的ko驱动模块,编译时自动打包到根文件系统里 。但是我修改完相关package后,编译不生效,也就是没有将ko文件打包到指定的文件系统里,也没任何语法错误。如下图所示:【原因】buildroot不会去检测自己哪部分被改动需要去重新编译。因为要使用一种完全可靠的方式去检测某一部分被改变的是非常困难的,所以buildroot开发者没有去尝试检测功能。而且不像yocto那样有包管理。【解决办法】解决

2021-10-09 15:31:00 2343

原创 Linux kernel 引用计数kref

引用计数-kref1、 前言众所周知,C/C++语言本身并不支持垃圾回收机制,虽然语言本身具有极高的灵活性,但是当遇到大型的项目时,繁琐的内存管理往往让人痛苦异常。现代的C/C++类库一般会提供智能指针来作为内存管理的折中方案,比如STL的auto_ptr,Boost的Smart_ptr库,QT的QPointer家族,甚至是基于C语言构建的GTK+也通过引用计数来实现类似的功能。Linux内核是如何解决这个问题呢?同样作为C语言的解决方案,Linux内核采用的也是引用计数的方式。如果您更熟悉C++,可以

2021-08-19 09:25:55 881

原创 FOTA升级简介

1、FOTA升级简介FOTA(Firmware Over-The-Air)移动终端的空中下载软件升级,指通过云端升级技术,为具有连网功能的设备提供固件升级服务。在物联网通讯模块领域,FOTA主要应用于更新升级芯片内部软件模块,进行功能优化和需求定制升级等功能。FOTA(Over-the-Air Technology)升级有两种类型,分别是:Increment OTA(增量/差分)和Full OTA(整包),每一种类型都有对应的用途和优势。本文采用的是Increment OTA(增量/差分)升级方式。使

2021-06-30 17:11:42 19207 4

原创 linux驱动之nand flash

linux驱动之nand flash1、 Nand Flash一些名词的解释1.1 (Bad) Block Management(坏)块管理Nand Flash由于其物理特性,只有有限的擦写次数,超过那个次数,基本上就是坏了。在使用过程中,有些Nand Flash的block会出现被用坏了,当发现了,要及时将此block标注为坏块,不再使用。于此相关的管理工作,属于Nand Flash的坏块管理的一部分工作。1.2 Wear-Leveling负载平衡Nand Flash的block的管理,还包括

2021-06-29 17:13:32 2425

原创 嵌入式Linux --修改文件后重启还原

嵌入式Linux --修改文件后重启还原1、现象最近几天,由于测试测出我写的代码的一个bug,在设置完USB的PID后,重启完,有概率性的不生效。2、原因在查看shell脚本读出PID值和该文件被修改的时间,发现在重启前,可以确定该文件已被修改,但是重启以后,发现这个文件被还原了。因此,这个bug的原因是目标文件被修改后重启,会被还原。3、解决办法在查看相关资料后,发现是在Linux里write某一文件还不够,还需要sync一下。具体我是在write以后fdatasync了一下。如下图:4、

2021-06-04 11:12:37 1843

原创 Linux usb驱动(一)--简单介绍

Linux usb驱动(一)-简单介绍一、引言在这就不多说usb的来源以及它的发展史了,只要知道虽然这个很难,但是用处很大,值得花精力去研究,也值得你花两到三分钟去看这篇文章。因为能用上USB的设备太多太多,比如常见的鼠标,键盘,摄像头,U盘,手机,电脑等等,你能想到的消费级电子产品基本都用上了USB。二、USB系统概述很多人会问USB到底是什么?USB是Universal Serial Bus的缩写,意思就是通用串行总线,再说的通俗易懂些,就是一种能适用特别多的设备的有线串行(一位一位通信)通信。

2021-05-28 15:24:27 552

原创 内存管理之堆与栈

内存管理之堆与栈一、概念在C语言里,定义了4个内存区间:代码区;全局变量和静态变量区;局部变量区,即栈区;动态存储区,即堆区。堆区(heap)——一般有程序员分配释放,若是程序员不释放,程序结束时可能由操作系统释放,但是容易造成内存泄漏。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。栈区(stack)——由编译器自动分配释放,存放函数的参数值,局部变量值等。其操作方式类似于数据结构的栈。全局区(静态区)(static)——全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量

2021-04-20 16:20:03 157

原创 const修饰指针

const修饰指针const修饰指针有三种情况:1、const修饰指针 —常量指针const int *p;常量指针指向的值不可更改,指向可以改变。2、const修饰常量 —指针常量int * const p;指针常量指向的值可以更改,指向不可更改。3、const即修饰指针,也修饰常量const int * const p;这个是指向的值不可更改,指向也不可更改。...

2021-04-18 15:19:50 83

原创 嵌入式Linux:开机抓启动log

嵌入式Linux:开机抓启动log由于公司工作需要,经常需要抓取启动log,但是dmesg的buf又有限,它会循环覆盖头部log。因此,需要一个开机抓取log的脚本来抓取完整启动log,以此来分析出现的bug。适用对象嵌入式Linux系统主要思路编写一个shell脚本,将dmesg的log信息输出到文件中,还可以将logread -f读出来的信息也输出到文件中将编写好的脚本添加到开机自启动那,也就是inittab里脚本编写#!/bin/shloop_flag=1

2021-04-13 09:48:56 893

原创 shell脚本中if判断条件小结(-e -f -eq等)

shell脚本中if判断条件小结(-e -f -eq等)字符串判断含义-n str1当串的长度大于0时为真(串非空)-z str1当串的长度为0时为真(空串)数字的判断int1 -eq int2两数相等为真int1 -ne int2两数不等为真int1 -gt int2int1大于int2为真int1 -ge int2int1大于等于int2为真int1 -lt int2int1小于int2为真int1 -le int2

2021-04-12 17:33:13 4187

原创 openwrt之ubus机制

openwrt之ubus机制最近工作上的项目使用的是openwrt,并且我负责的某一任务要获取网络状态,因此需要使用到ubus,以下内容仅为学习笔记。1、openwrt简介OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。 同时,它还提供了100多个已编译好的软件,而且数量还在不断增加,而OpenWrt SDK 更简化了开发软件的工序。OpenWRT不同于其他许多用于路由器的发行版,

2021-03-29 16:31:50 6313

OTA_UPDATE.rar

广升fota升级工具

2021-06-30

零死角玩转STM32F103

野火家stm32f103文档,适合初学者,自认为是一个很好的资料

2018-08-08

空空如也

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

TA关注的人

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