Linux Driver porting的步骤

linux porting 总结(未完待续) 最近做了很多跨平台(主要是linux和windows)C++代码的移植工作,本文做一下总结。跨平台移植技术是由大量的细节构成的,所以下文包含了大量的针尖大小的细节,内容很庞杂。主要遇到以下几个类问题: 1.系统api的移植 windows和linux的api背后的理念是类似的,接口参数略微不一样,但是差别不大,所以完全可以使用一套接口封装。 1)文件查找 windows和linux文件查找ap... 阅读详情
1. 认真阅读IC的spec,我们需要从中读出一些有用的信息。
    1) IC正确的(或者可以说精确的)上电时序,这其中包括,Host端控制IC时存在几个pin(regulator, GPIO等),这几个pin严格的上点时序是怎么样的。
    2)IC上电时,是否需要发送一定的初始化序列,来保证IC的正常工作。
    3)IC的正常工作时的工作原理及工作模式等。
2. Driver编写:
    Linux driver的编写一般分为两个部分:一个为DTS, 另一个为真正的driver code。
    DTS:一般从device的spec中,我们可以得知,真正drive这颗IC所需要的所有资源。一般我们会将这些资源,全部填充到DTS node里。这些资源在系统boot的时候会被driver进行解析和资源申请。
    Driver code:以下是driver porting中几个比较重要的函数,需要注意。
                        xxx_init() 这个是一定会被系统加载的,因为它被编译到.init段中,一般这个函数,只会做一件事情,就是注册driver。
                        xxx_probe() 这个函数一般在driver match成功后,被系统调用的。而在这个函数中做的事情比较多,主要分三个方面的任务:一是对DTS的分析及资源的申请工作。二是,对于device的default工作模式进行设置,包括上电时序和模式选择等。三是,对于文件系统的注册(因为在Linux系统中,所有kernel与上层的交互都是通过文件系统来完成的)。
                        xxx_suspend() /xxx_resume()这是Power management系统需要回调的函数。用以保证系统能够正常进入低功耗模式。
在x86 linux上porting driver 遇到的dma memory不一致的问题 前几天在Intel i386 linux PC上移植了一个PCIE Ramdisk的驱动。 在PC上通过dma_alloc_coherent()分配了一块区域,分配出来的physical address在0x15000~0x15000+1M区间。按照linux的Documentaion,用这个函数分配的区域能保证数据一致性,而且x86平台本身就有硬件保证让这段区域non-cacheable no 阅读详情

相关推荐

TouchPanel_Driver_Porting(TP驱动移植)

TP移植 touchPanel——Driver——porting

ChandiChandi的博客 1643

Linux WiFi Porting

Porting Android WiFi主要分两步进行,首先在kernel 把wifi网卡跑通,能够ping通外网,这样就确保了首先wifi driver应该是没有问题的。然后在将wifi Porting到Android。 这里以BCM43569 USB wifi Porting到IMX 6Q Android6.0平台为例进行讲解Linux WiFi Porting。 wifi 驱动一般原厂会...

huangweiqing80的博客 1428

TCA6416A驱动程序

TCA6416A驱动程序

mtk android lcm调试

参考MTK 文档LCM_Customer_document_MT6575.pdf The following shows the steps to add a new LCM driver:  (1)  Create LCM driver folder $LCM in alps/mediatek/custom/common/kernel/lcm/ (2)  Cre

LoongEmbedded的专栏 4885

TCA6416A GPIO扩展芯片手册

GPIO扩展芯片,TCA6416A。

Bluetooth Stack Porting

移植CSR的Bluestack到PC上,目前只支持数据传输,还无法支持A2DP相关Profile. 所以Source Code将在测试之后分阶段上传. 请有需要者耐心等待.首先上传Message,Task和Timer相关部分.

Linux驱动移植入门说明

This post explains how to cross-compile the Linux kernel and Backport driver sources against ARM platform and loading the binaries to the target. The end users who are interested in bringing up their ...

时有限 4670

Arm9 Linux Porting.pdf

Arm9 Linux Porting 手冊 Arm9 Linux Porting.pdf

高通平台TP和LCD 驱动Porting流程

ELAN 6730 高通820 8996平台Porting手册 1.Touch porting 创建Touch驱动文件夹 cd android/kernel/msm-3.18/drivers/input/touchscreen/ mkdir Damon_elan cd Damon_elan 移入Touch驱动.c和.h档案,编写Makefile和Kconfig vim Kconfig vi...

xiaotao1513的博客 3022

用ESP32和HomeSpan自制HomeKit智能灯,手把手教你从零接入苹果家庭App

本文详细介绍了如何使用ESP32开发板和HomeSpan开源库自制原生HomeKit智能灯,从硬件搭建到软件配置,再到通过苹果家庭App控制的全过程。项目绕过了苹果MFi认证,成本低廉但功能完整,支持Siri语音控制、自动化场景等高级功能,是智能家居DIY的实用指南。

weixin_28717431的博客 321

量子密钥分发系统的工程实践(四):FPGA在后处理中的核心实现与优化

本文深入探讨了FPGA在量子密钥分发(QKD)系统后处理中的核心实现与优化策略。文章详细拆解了FPGA如何高效完成原始密钥提取、误码协商和私密放大等关键任务,并分享了流水线设计、资源复用及存储器架构优化等工程实践“心法”,旨在解决高速、实时QKD系统中的性能瓶颈,提升密钥生成率。

t8u9v0的博客 387

android_porting步骤

1. 认真阅读IC的spec,我们需要从中读出一些有用的信息。 1) IC正确的(或者可以说精确的)上电时序,这其中包括,Host端控制IC时存在几个pin(regulator, GPIO等),这几个pin严格的上点时序是怎么样的。 2)IC上电时,是否需要发送一定的初始化序列,来保证IC的正常工作。 3)IC的正常工作时的工作原理及工作模式等。 2. Driver编写: ...

sdkdlwk的博客 1万+

独立游戏开发者的新武器:实测腾讯混元3D自动绑骨,搭配Mixamo让角色动画制作效率翻倍

本文实测腾讯混元3D自动绑骨功能与Mixamo动画库的协同使用,显著提升独立游戏开发者的角色动画制作效率。通过解决卡通角色绑骨偏差、优化骨骼权重及动画状态机配置,使原本两周的流程缩短至三天,并分享Unity中的性能优化与版权合规要点。

weixin_42662605的博客 488

usb3.0的driver porting——基于linux kernel3.18的usb gadget udc driver & net3380 driver porting

因为要驱动net3380的pci转usb3.0的片子,上网看到最新linux kernel 有基于net2280修改的net3380的driver,所以要将新内核3.18的driver porting到公司的板子上。因为新内核的driver有udc driver进行控制管理gadget,所以也要porting udc。下面附上3.18的udc driver的流程图。 最后,留个下篇,待调

lintwins的专栏 2063

Qt for Android:基于libusb实现CH340x串口通信的高效开发方案

本文详细介绍了在Qt for Android环境下,基于libusb实现CH340x串口通信的高效开发方案。通过绕过Android高版本系统的权限限制,利用libusb+JNI技术实现稳定通信,适用于工业手持终端等场景。文章涵盖环境搭建、核心实现、常见问题解决方案及性能调优经验,帮助开发者快速掌握这一关键技术。

weixin_42715608的博客 426

questasim的傻瓜式安装与仿真教程

一、安装 1、下载软件 链接:https://pan.baidu.com/s/1S05AnO_w-wy6RsAj_kdUXg 提取码:p2nt 2、根据电脑类型是32位还是64位,解压不同安装包。 解压得: 2、运行.exe文件,出现: 问题及解决办法: 这是杀毒软件造成的,因此在安装过程中关闭杀毒软件即可。关闭之后,再次运行.exe文件。 3、点击下一步,进入选择安装位置界面,如下:选择好安装位置后点击下一步。 4、点击同意 5、接下来等待安装结束即可,在安装过程中,会跳出来弹框,询问是否要添

树下等苹果的博客 3万+

driver porting from Android to My kernel

1. Add the option in Menuconfig 1)  add following code into drivers/char/Makefile obj-y += radio/ 2) add f

IamGooday的专栏 934

Zotero PDF Translate插件实战:DeepL API免费申请与高效翻译配置指南

本文提供Zotero PDF Translate插件配置DeepL API的完整实战指南。详细介绍了如何免费申请DeepL API密钥,解决国内访问问题,并在插件中完成精细配置,实现文献阅读时的无缝划词翻译,大幅提升科研人员和学生的英文文献阅读效率。

rum55的博客 454

Touch driver porting

1>将驱动code加入源码kernel目录,touch driver是drivers/input/touchscreen

miss_lazygoat的专栏 2995

基于Mask-RCNN网络的书架图书书脊分割和检测(含代码)

图书馆的书架上的图书书脊分割/检测对于图书书名等信息的识别具有重要意义,因此,该博客基于Mask-RCNN网络实现了图书书脊的分割和检测,有利于进一步利用ocr文字识别技术实现图书书名等信息的入库。如下图所示,为书架原始数据和分割/检测后的结果。(本文已训练模型,无需训练)

qq_44619530的博客 2025

L2正则化与Ridge回归的关系

非常感谢您提供的详细任务描述和要求。我会尽力按照您的指引来撰写这篇技术博客文章。 L2正则化与Ridge回归的关系 1. 背景介绍 机器学习模型在训练过程中容易出现过拟合的问题,这会导致模型在训练集上表现很好但在测试集上泛化性能较差。为了解决这一问题,正则化技术应运而生。其中

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 656

linux 2.6 porting guide

http://lwn.net/Articles/driver-porting/

wlzsddx的专栏 431

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

usb ohci driver porting

1.kernel  Device Drivers  --->   SCSI device support  --->     SCSI device support   SCSI disk support U盘用到了SCSI USB大容量存储设备利用SCSI(Small Computer System Interface,小型计算机系统接口)协议 和主机系统通信  [*]

KylinShui 1216

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

display:Driver porting: DMA changes-2003

直接内存访问(DMA)支持层在2.6中已进行了广泛更改,但是在许多情况下,设备驱动程序应保持不变。对于使用新驱动程序的开发人员,或希望使用最新API保持其代码最新的开发人员,有很多更改需要注意。 最明显的变化是创建了新的通用DMA层。大多数驱动程序程序员都知道pci_* DMA支持函数;。SPARC程序员可能也遇到过类似的sbus_*函数集。从2.5.53开始,添加了一组新的通用DMA函数,目的是提供一个DMA支持API,而不是特定于任何特定总线。新的功能看起来很像旧的功能;从一个API切换到另一个...

maze的专栏 341

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Driver porting: supporting mmap()

http://lwn.net/Articles/28746/ Occasionally, a device driver will need to map an address range into a userprocess's space. This mapping can be done to give the process directaccess to a device's

892

[lwn]Driver porting: a simple block driver

Driver porting: a simple block driver [Posted March 14, 2003 by corbet] http://lwn.net/Articles/25415/ This article is part of the LWN Porting Drivers to 2.6 series. Given

smile 868
上一篇: dev_get_drvdata()函数
下一篇: 复制构造函数(拷贝构造函数)
计算机与认知
博客等级 码龄14年 31粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值