自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

layuetian2011的博客

Android驱动海洋里的小鲸鲨

  • 博客(107)
  • 资源 (14)
  • 收藏
  • 关注

原创 3568 4G EC25调试

EC25 RK3568 android11

2023-11-23 19:28:26 205

原创 RK3568 Android11 编译报错

Deps:Args:关键报错:

2023-11-16 20:31:16 1259 4

原创 RK3568 wifi 调试

mmc-pwrseq这个IO没有解析到,定位到pwrseq.c中的mmc_pwrseq_alloc()没有跑list_for_each_entry(),有wlan0 log,但是加载固件失败,报bcmdhd: disagrees about version of symbol module_layout。此问题是因为kernel修改后,重新编译了bcmdhd.ko ,该ko与机器里的不一致,需要确保kernel下的这个ko和out下的完全一直,可以手动拷贝下,后OK。

2023-11-13 15:13:20 123

原创 RK3568 启动失败

后面测试各路电压,发现VDD_CPU电压不正常,没有输出,后面仔细检查,发现PMIC_SLEEP这个GPIO被拉高了,导致VDD_CPU这个DCDC休眠,卡在usb加载过程,起初以为是EMMC,USB等模块导致,在dts disabled相应模块,依旧没有效果。但是在没有烧入固件的时候,这个VDD_CPU是OK正常的,估计是这个GPIO内部默认下拉,硬件上有个上拉,逻辑设计不合理。

2023-10-27 20:40:33 883

原创 DM3730 uboot 分析

DM3730 Logicpd uboot分析

2022-08-04 22:32:37 291 1

原创 DM3730 X-load 分析

DM3730 分析

2022-08-03 14:55:48 260

原创 Linux多进程编程

进程三态:就绪,运行,阻塞.优先级数字越低,优先级越高.一个程序中,fork()之后的代码,父子进程都回执行.多进程的创建的4种方式,fork() 一次调用,两次返回,父进程中返回子进程的PID,子进程中成功fork返回0fork()创建的子进程,拷贝父进程的进程上下文(代码和数据段).父子进程的运行 是无序的.vfork() 与fork区别:共享而不是拷贝父进程的进程上下文,vfork()之后,子进程先运行,父进程后运行.exec()函数集:exec

2021-07-28 10:32:38 187

原创 USB总线驱动

SOC通过AHB总线连接USB控制器,USB控制器,USB控制器内部集了一个根集线器(root hub),可以直接连接USB设备,也可以连接集线器,然后接不同的USB设备.UHCI/OHCI/EHCI/XHCI1.0低速:1.5M2.0全速:12M2.0高速:480MUSB3.0:5GUSB热插拔的实现:USB集线器的每个端口的D+/D-上,分别接了一个15K的电阻到地,这样,在集线器的端口悬空时,就被这两个下拉电阻拉到了低电平,而在USB设备端,在D+/D-上接了1.5k欧姆上拉电阻,对于全

2021-07-27 16:18:10 940 1

原创 Linux 内存映射

之前我们由提过,Linux进程都拥有4G的内存空间,其中低3G是用户空间,高1G是内核空间.其他用户空间是独立的,内核空间是共享的.有个问题,假如A进程往0x12345678这个地址写1,B进程往0x123456789这个地址写0,那么会发送什么情况呢?物理内存的0x12345678这个地址的值是多少呢?答案是物理内存的0x12345678这个地址的内容未知,因为根本这个地址根本就不是用户空间看到的0X12345678地址,那么又又一个问题来了,A/B进程写的0x12345678这个地址具体和物理内存的

2021-07-23 18:03:36 321

原创 Linux kernel阻塞与非阻塞,休眠与唤醒

当open一个设备的时候,可以指定非阻塞调用O_NONBLOCK,默认是阻塞的,那么内核是怎么实现阻塞和非阻塞的呢?所谓阻塞,是指一个调用发出后,比如说read().在没有得到想要的数据之前,不会返回,一直阻塞在这个方法里,指导数据 ready才返回.所谓非阻塞,是指一个调用发出后,不管有没有数据,都回马上返回,有数据的时候,就返回数据和正确的状态,如果没有数据,就返回错误状态....

2021-07-23 11:44:37 745

原创 Linux 同步和互斥

当我们在某个独立的main.c中对一个共享资源读写的时候,为了防止其他模块也在同步修改,往往会维护一个全局flag,如下:if(flag==TRUE){//read or write value;flag = FALSE;}但是在多进程中,read or write过程中可能进程被调度出去,此时flag还是TRUE,其他进程也可能会修改这个变量,从而实现不了同步和互斥的作用.那么同步和互斥,主要有以下方面的内容:1.进程与进程之间的同步互斥.2.进程与其他代码之间3.进程与中断之间.L

2021-07-23 11:05:05 344

原创 i2c总线模型

硬件拓扑:一个soc可以支持多路i2c,一路i2c可以支持多个i2c device经典的Linux设备驱动模型:device ,bus,driver.device分控制器主设备和外部具体的从i2c设备.主设备i2c控制器用i2c_adapter抽象,从设备用i2c_client抽象.i2c总线用i2c_bus抽象,其中总线有数据手法算法抽象i2c_algo,同样,driver也分控制器驱动和从设备驱动,还有总线驱动.控制器驱动可以分为框架framework层以及具体的master 驱动.控制器

2021-07-22 11:49:13 123

原创 DMA 子系统

首先补充点高端内存的知识在32位操作系统上,把程序的0-3G(PAGE_OFFSET:0xc0000000)作为用户空间,3-4G作为内核空间.因为每个进程有各自不同的页表,进程的用户空间是完全独立的,互不相干,但内核空间是由内核负责映射,它不会随进程的切换而切换,内核空间的虚拟地址到物理地址的映射是所有进程共享的.内核的虚拟空间独立其他程序.内核空间的内存分配依据documentation/arm/memory.txt,如下:在内核的虚拟地址空间3-4G这个范围,有一段大小为896M的虚拟内存是

2021-07-21 20:13:31 687 1

原创 SPI总线

SPI是motorola首先提出的全双工同步串行总线,采用主从模式,支持多slave,只支持单master,时钟由master控制.在时钟移位脉冲下,数据按位传输,高位在前,低位在后.CLK/MOSI/MISO/CS,数据可达几M.SPI优点:全双工,操作简单,传输速率高.缺点:多个spi设备需要占用主机较多的管脚.(每个主机都需要一根片选线).只支持单个主机.没有流控,没有应答机制.在一个SPI时钟周期内,会完成如下操作:1.主机通过MOSI线发送1位数据,从机通过该线读取这1位数据.2.从机通

2021-07-20 15:09:49 355

原创 MMC子系统

参考 https://blog.csdn.net/weixin_42262944/category_9758652.htmlhttps://blog.csdn.net/lwj103862095/article/details/38335335MCI(Multimedia Card Interface)emmc,SDMMC,sdio是MMC在实际物理接口上的三种应用形式.分为host,core,card三个驱动层次,MMC核心层:完成不同协议和规范的实现,为host和设备层提供接口函数.核心层由三个

2021-07-19 20:24:16 733

原创 uart子系统

uart无论在ARM,Android/Linux,还是MCU裸机中都应用非常广泛,TTL/RS232/RS485都是uart实现,只是电平差别.uart以其良好的兼容性/低成本/传输距离等优点,广泛应用.本文记录自己对uart的一些理解.硬件拓扑:SOC本身存在多个uart控制器,一个uart控制器引出一个uart口.同时SPI设备/USB设备/i2c设备,也可以成为uart控制器,分出uart口.同时uart有别于I2C,SPI等,uart可以说不是一种总线,而是一种协议.要去控制器和外设都实

2021-07-16 18:21:41 526

原创 i2c子系统概述以及i2c控制器

I2C硬件拓扑结构:一个SOC,有多个i2c控制器,一个I2C可以引出一个2c接口.一个i2c接口可以接多i个I2C地址不同的设备.同时I2C分master和device,对于SOC而已,其i2c接口都当作master.总的来说,i2c 框架层,有这么几个虚拟设备:i2c控制器 —>i2c_adapter---------->i2c资源的提供者—platform_devicei2c总线-------->i2c_busi2c外设-------->i2c_client --

2021-07-15 20:31:48 861

原创 pwm设备驱动

前文有说到软件侧背光的控制过程,通常的背光,硬件层都是通过pwm来调节的.本文理下pwm驱动,pwm也和设备驱动模型一样的思路,分控制器host设备和具体的device驱动,其中驱动又分设备驱动层和驱动核心层.pwm设备相当于资源的提供者(supplier),背光相当于pwm的消费者(customer)本文重点放在pwm设备端(包括设备,以及这个平台设备本身对应的驱动)pwm本质上是一种通信协议,类似于i2c,spi,usb,平台设备驱动(分核心层和host device driver层)的意

2021-07-13 20:01:03 1373

原创 背光子系统分析笔记(以RK3288-Android7.1 Linux 4.4为例)

当调节设置->显示->亮度时,或者echo xxxx >/sys/class/backlight/backlight/brightness LCD亮度能随着变化,这是怎么实现的呢?参考:https://blog.csdn.net/weixin_41028621/article/details/103542751本文记录下分析过程,设置应用java层操作brightness节点过程,暂不详说,希望能人志士补充.本文重点说驱动层.brightness节点的生成驱动:kernel/dri

2021-07-13 18:16:56 771

原创 联咏NT98520/NT98525/NT98528/NT98529与海思HI3516/HI3519 AI芯片参数对比

技术交流QQ:1617890720(本人也是打工人)

2021-07-08 14:16:06 6340

原创 NT98520/NT98525(典型)/NT98528参数对比

联咏Novatek NT98525是一款高集成度的SoC,具有高图像质量、低比特率、低功耗的特点,目标是4Mp到5Mp边缘计算IP摄像机的应用。SoC集成 ARM Cortex A9 CPU核,新一代ISP,H.265/H.264视频压缩编解码器,高性能硬件DLA模块、图形引擎、显示控制器、以太网PHY、USB 2.0、音频编解码器、RTC和SD/SDIO 3.0,可提供最佳性价比的边缘计算IP摄像机解决方案...

2021-07-08 14:12:39 4276 1

原创 NT98562/NT98566与海思HI3516EV200/HI3516EV300参数对比

技术交流QQ:1617890720(本人也是打工人)

2021-07-08 14:04:36 2267 2

转载 android系统编译报错

android系统编译报错frameworks/base/media/java/android/media/SRTRenderer.java:168: 警告: ‘’ 用作标识符final int _ = 0;^(Java SE 8 之后的发行版中可能不支持使用 '’ 作为标识符)frameworks/base/media/java/android/media/SRTRenderer.java:187: 警告: ‘_’ 用作标识符Message msg = mEventHandler.obtain

2021-07-07 11:10:05 472

原创 NT9832X udev规格启动WiFi AP,AP不能正常使用

本项目使用的外置wifi dongle,用于参数配置,要求热插拔,再之前的海思/AR9201平台下是用udev规则启一个start_external_wifi_ap.sh的脚本,在脚本里面启做状态检测,参数配置后,起hostapd/udhcpd,但是NT9832X平台下,依据此思路实现,手动执行脚本,WIFI AP 正常.但是用udev规则起该脚本,WIFI AP不能正常使用.经分析,udev规则能正常作用,start_external_wifi_ap.sh脚本有执行,但是当执行host

2021-05-24 09:31:52 271

原创 内核空间和用户空间通信的几种方式

1.ioctl等系统调用2.netlink3.input子系统4.kmod(内核态通过call_usermodehelper()调用用户空间的可执行程序,比如/sbin/hotplug,/sbin/reboot,/sbin/poweroff)

2021-05-07 18:05:26 1235

原创 Nt9832x uboot下通过U盘升级all-in-one

U盘必须是FAT格式usb stop;usb start;fatls usb 0;//ls U盘下文件升级ldmw.b 1800000 ff 8000000fatload usb 0 1800000 LD98323A.binnand erase 0 40000;nand write 1800000 0 40000升级all-in-onemw.b 1800000 ff 8000000fatload usb 0 1800000 FW98323A.binnvt_update_all

2021-05-07 09:36:20 525

原创 中断唤醒系统流程

一般来说,唤醒设备会有一个interrupt pin硬件连接到SOC 的GPIO pin,一般来说,当设备需要唤醒系统的时候,会通过改变interrupt pin电平状态,而SOC会检测到这个变化,将boot cpu唤醒,进而唤醒整个CPU系统,系统通过相关子系统通知上层做出相应的处理.这就是中断唤醒的过程.为了使能设备的唤醒能力,设备驱动中会在suspend的时候通过enable_irq_wake(irq)接口使能设备SOC引脚的中断唤醒能力.enable_irq_wake()可以有两种途径:1.d

2021-05-07 09:31:41 891

原创 Nt 9832x loader注意事项

详细参考官方文档 software\board\document\OSDRV\NT9832x_Boot_Loader_User_Guide_en.pdfloader编译问题解压na51068_loader源码 进入na51068_loader/MakeCommonmake cleanmake release注意 make 会报错的必须MakeCommon目录下 make release项目配置快速修改a、配置以NT98323 TEST项目为例Project\Model\ModelConfig

2021-05-06 14:46:46 639

原创 Nt9832x编译常见问题

首先参考software\board\document\OSDRV\NT9832x_SDK_Pure_Linux_Programming_Guide_en.pdf1、依赖库安装检查1.2节查一下依赖库是否没有安装2、系统shell 是否设置为 bash,此处最容易出错sudo dpkg-reconfigure dash, and choose “No” in the windowOr$ sudo rm /bin/sh && sudo ln -s /bin/bash /bin/sh

2021-05-06 14:40:33 808

原创 中断唤醒系统流程

在项目中,一般具有中断唤醒的社保会有一个interrupt pin硬件连接到SOC的gpio pin,一般来说,当设备需要唤醒系统的时候,会通过改变interrupt pin电平状态,而SOC会检测到这个变化,将SOC的boot cpu(noboot cpu在suspend的时候被disable了)从sleep状态唤醒,该设备通过相关子系统通知上层应用做出相应的处理.这就是中断唤醒过程.为了使能设备的唤醒能力,1.设备驱动会在系统suspend的时候通过enable_irq_wake(irq)接口使能设

2021-05-06 14:39:47 301

原创 C语言引用第三方静态方法

今天在Nt9832x平台,调试加密芯片DX8,公因数提供了ca9的静态库libcdx8api_ca9.a团队的意思是希望我这边基于这个静态库,在目前的SDK下调通,我基于用户态I2C调通了这个IC,但是还是涉及到open,ioctl等操作,本来想把这些操作统一封装成一个func,直接提供源码,但是不知何以,项目负责人需要我提供单个的接口函数,把源码编译成静态库.首先说下,厂家给的包含main等func的文件demo.c,回调函数实现文件dxi2c_a8.o,我自己写了含main个testApp.

2021-04-30 15:12:47 391 1

原创 Nt9832x 复用管脚配置调试

复用管脚配置调试1、dtsi复用管脚配置参考 software\board\document\OSDRV\NT9832x_UI_Pinctrl(pinmux)_tool_en.pdf工具位置 linux的sdk目录 build/nvt-tools/nvt_pinctrl_tool/top_generator.xlsmtop.csvBSP\linux-kernel\arch\arm\plat-novatek\include\plat-na51068\top.hpad.csvBSP\linux-k..

2021-04-30 14:36:11 570

原创 NT9832X I2C操作

1、首选确认I2C管脚复用是否配置好software\board\document\OSDRV\NT9832x_Linux_Pinctrl(Pinmux_framework)_User_Guide_en.pdf 第10节TOP(/Pinmux) Controller 以及register_map.pdf以DEMO的 X_I2C0_SCL/SDA 为例X_I2C0_SCL对应寄存器地址为0xFE030028的bit22~20X_I2C0_SSDA对应寄存器地址为0xFE030028的bit26.

2021-04-30 14:34:48 466

原创 软硬件加密方案

硬件加密:未了防止开发出的电子产品被恶意抄袭,需要对软硬件加密,主要目的1.即使对方抄袭了我方的硬件,再有用我方的产品固件情况下,由于对方硬件加密芯片与软件不一致,软件无法通过校验,不能正常工作.所以:对方抄袭硬件情况下,要向产品推向市场,只有自己重新开发软件,重新选型加密芯片,重新适配.但是硬件本来就是天下一大抄,基本是在原厂的公版基础上做些小改动,单纯的硬件抄袭没有十分的必要.但是.如果我方开发人员得到完整的软硬件资料,是存在产品被恶意抄袭的可能的.数据加密:客户的重要数据,如果保存到fla

2021-04-29 17:26:43 505

原创 剖析Linux内核内存分配与回收机制

1.伙伴算法与Slab分页机制2.内存映射与进程虚拟空间3.请求调页与写时复制.一.内存的分配和回收Linux系统内存中,CPU不能按物理地址来访问存储空间,而必须使用虚拟地址.因此对于内存页面和管理,通常是先在虚拟空间中分配一个虚拟空间,然后才根据需要为此区间分配响应的物理页面并简历映射.也就是说,虚拟区间的分配在前面,而物理页面的分配在后面.1.伙伴算法.Linux伙伴算法把所有空闲的页面分为10个块组,每组中的块大小是2的幂次方个页面.块与块之间用链表连接.满.

2021-04-27 15:14:41 491

原创 rk代码repo编译问题

关于kernel部分:如果需要删除.git,或者全部用同一git管理,必须增加.scmversion文件,内容为“+”并修改.gitignore,把.scmversion提交上去如果没有这个操作,flash将挂载不上。android部分:编译的时需要将# manifestSYSTEM_WITH_MANIFEST := true 设置为false----device/rock

2021-04-27 15:10:42 275

原创 NT9832x 调试techpoint 9930

novatech demo板用的AD芯片是TP2831由于TP2831芯片封装太大,我司改为TP9930(该芯片已经在Hisi下调通)驱动目录:code/hdal/ext_devices/video_decoder/techpoint/tp28xx/按照驱动结构框架,把TP9930移植之后,能正常出图,目前遇到2个问题,1.接D1摄像头,能出图,但是闪屏,2.录音有底噪.问题1.咨询供应商FAE得知,接D1时,对于TP9930,如果是DDR_2CH(一个BT656出2路video),Vcap出

2021-04-23 18:30:30 3616

原创 中断子系统之下半部处理机制

本文根据http://www.wowotech.net/linux_kenrel/soft-irq.html学习记录下半部机制主要有:softirq,tasklet,workqueue,kernel thread.tasklet是基于softirq实现.softirq性能搞,tasklet方便适用kernel thread是老版本内核的某些外设驱动会适用,现在基本已经被抛弃.这样会导致资源极大的浪费(进程id是其一,还有很多其他的资源,例如内存消耗也比较大,调度器需要调度更多的thread等

2021-04-16 18:35:12 269

原创 GIC驱动

本文以RK3288 GIC-400为例学习kernel/driver/irqchip/irq-gic.c(GICV2版本驱动)gic再dts中的定义rk3288.dtsigic: interrupt-controller@ffc01000 {compatible = “arm,gic-400”;interrupt-controller;#interrupt-cells = <3>;#address-cells = <0>; reg = <0x0 0xff

2021-04-16 11:06:49 318

原创 ARM-CORE实现中断异常原理

以51单片机中断例程为例为例,如下图:首先,MCU的启动文件(*.S)里面会定义异常向量表,当中断来临时,CPU触发异常跳转到异常向量表地址.而该地址存储的是跳转到中断处理程序指令:如下图,异常向量表里面以及定义了串行口中断 异常地址0x0023H,而0x0023里面具体内容是LJMP UART0_ISP当串口0产生中断后,触发CPU跳转到0x0023,在执行跳转函数,进而执行uart0的中断处理函数UART0_ISR(void)函数2.ARM的异常有哪些:ARMV7上:ARM异

2021-04-16 10:11:01 149

3568 4G EC25调试

EC 25调试资料 Android11调试

2023-11-23

tp9930tool.tar.gz

tp9930 I2C 工具

2021-04-23

tp28xx_kdrv_tp9930.tar.gz

TP2828 TP2831 TP9930

2021-04-23

wpa_supplicant_8_kk_4.4_rtw_r25669.20171213.tar.gz

wpa_supplicant hostapd hostapd.conf udhcpd.conf NT9832x Hisi

2021-04-06

libnl-1.1.4.tar.gz

libnl-1.1.4 源码

2021-04-06

wpa_supplicant_8_kk_4.4_rtw_r25669.20171213.tar.gz

wpa_supplicant hostapd 源码

2021-03-31

wireless_tools.29.tar.gz

wireless_tools 29 源码

2021-03-31

mt7601.tar.gz

mt7601 wifi 模块源码,Hisi,novatek已经验证OK,AP/STA共用

2021-03-29

udev-167.tar.bz2

udev-167 源码

2021-03-29

RK3399_android7.1_root(7.1 root补丁).rar

RK远程提供的RK3399 Android7.1 root patch,有需要root的朋友,请下载,

2020-09-16

RK3288_RK3229_7.1_root_patch.zip

RK3288 RK3229 root patch,经过验证可用,含测试apk 有问题的话,

2020-09-16

单片机显示屏LCD汉字取模软件

非常实用的单片机等LCD取字模块,简单直接,明白,省去你很多时间哦,希望大家喜欢

2012-10-27

linux进程管理

详细介绍了linux进程的有关概念以及各种用法,希望可以帮助大家

2012-09-29

C语言经典实例100

很好C语言资源,从简单到复杂,各种算法实例都有,希望能帮到大家

2012-09-29

空空如也

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

TA关注的人

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