自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wangdapao12138的博客

我想买个猫~~~

  • 博客(180)
  • 收藏
  • 关注

原创 硬件设计38之什么是MCASP?

1.McASPMcASP是美国TI公司的DSP的一种接入接口。称为复通道音频接入接口。这是一种通用的音频接入接口。采用的是时分复用的数据流形式。https://wenku.baidu.com/view/ccc1e9fdba0d4a7302763a3d.html。McASP即multi-channel audio serial port,是通用音频接口,支持TDM(Time-Division Mul...

2020-05-04 11:34:41 2740

原创 硬件设计47之如何使用Cadence进行原理图仿真?

1.Pspice介绍Pspice具有直流分析、交流分析、大信号瞬态分析等功能。Pspice适用于分析模拟电路和数字电路,但主要用于模拟电路的分析和波形分析。电路仿真需要有器件库,要注意的是库有两种:一种是符号库,存放的是器件形状,封装形式等信息,其后缀名是SLB和PLB;还有一种是物理库,包含器件的物理信息,其后缀名是LIB。只有当同时具有这两种库时才可以进行模拟。一般情况我们看到库中有如...

2020-05-04 11:34:30 9010 1

原创 Linux驱动开发24之设备树的解析

1.dts文件结构通过查看fdtdump输出信息以及dtb二进制文件信息,得到struct fdt_header和文件结构之间的关系信息如所示。通过以上分析,可以得到Device Tree文件结构如上所示。dtb的头部首先存放的是fdt_header的结构体信息,接着是填充区域,填充大小为off_dt_struct – sizeof(struct fdt_header),填充的值为...

2018-10-03 21:33:58 2294

原创 HI3519V101的设备树dts分析

1.目录分析/hisilicon/hi3519v101/hi3519v101/osdrv/opensource/kernel/linux-3.18.y/arch/arm/boot/dts我们看到有四个文件。在linux驱动开发编程模块中我们知道:.dts文件是一种ASCII 文本格式的Device Tree描述,此文本格式非常人性化,适合人类的阅读习惯。基本上,在ARM Linux...

2018-10-03 19:21:28 2147

原创 Linux驱动开发23之设备树dts的由来及部分属性

1.什么是DTS?为什么要引入DTS?DTS即Device Tree Source 设备树源码, Device Tree是一种描述硬件的数据结构,它起源于 OpenFirmware (OF)。在Linux 2.6中,ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx,比如板上的platform设备、resource、i2c_board...

2018-10-03 09:47:42 1584

原创 3519V101的kernel的RTL8201百兆网卡配置以及tftp、nfs

1.配置tftp服务器在网上找一个:2.按照HI3519V101的SDK安装以及升级使用说明来操作1)、配置tftp服务器    # 可以使用任意的tftp服务器,并将package/image_uclibc_xxx(或image_glibc_xxx)下的相关文件拷贝到tftp服务器目录下。2)、参数配置    # 单板上电后,敲任意键进入u-boot。设置server...

2018-09-15 22:22:01 1508 3

原创 3519v101的uboot的RTL8201百兆网卡配置

1.烧写其中部分文件我已经修改过,下面全面描述修改的过程。2.修改头文件配置1)修改配置文件hi3519v101.h2)修改内容为:3)修改原因:在\u-boot-2010.06\drivers\net\higmacv300中看到网卡的设备信息为:a.设置PHY的工作模式struct higmac_board_info         enu...

2018-09-10 21:37:44 2943

原创 X210-MT7601-USB WIFI移植

1、MT7601驱动的移植(1)开发环境搭建和确认(2)源码获取和解压(3)配置、编译、安装最后得到网络设备文件。2、插入usb WiFi 启动开发板linux,lsusb查看usb驱动Bus 001 Device 003: ID 148f:7601看到的是该驱动的厂家设备信息3、获取MT7601的源码4、解压源码到linux下,确认USB的VID(VEND...

2018-09-09 16:20:47 1309

原创 HI3519V101的sensor特性与驱动解析

海思的sensor驱动大部分工作在应用层,即应用层驱动(非ko形式存在),这样一来在对sensor改动时,就不需要重新编译内核了。缺点是,不稳定,效率会比较低。纯应用层驱动是没办法操作硬件的,所以需要调用底层i2c驱动。1、驱动源码路径       sdk\hi3519v101\mpp_big-little\component\isp\sensor目录下。2、sensor驱动调用...

2018-09-09 10:23:50 3019 1

原创 Ortp源码简介

1、ORTP库概览(1)库本身没有main,提供一堆功能函数,都在src目录下(2)库的使用给了案例,有main,在src/tests目录下(3)相关数据结构和头文件在include/ortp目录下(4)ortp实现了rtp和rtcp协议,前者负责传输,后者负责控制和同步协调2、ORTP库的使用案例(1)src/tests/rtpsend.c(2)ortp_init及a...

2018-09-09 01:22:05 4806

原创 ORTP库局域网图传和VLC实时预览

1.ORTP的引入1.1、视频网络传输的2种方式(1)基于下载:http or ftp(2)基于实时:RTP/RTSP/RTCP1.2、ORTP的介绍(1)openRTP,用C实现的一个RTP库(其实还有C++实现的,JAVA等实现的)(2)实质是一个视频服务器,工作时客户端和服务器实时传递视频数据(3)一般认为RTP工作在传输层,但是其实RTP比TCP/UDP高一个层...

2018-09-09 00:50:29 1114

原创 HI3519V101的mpp中sample总体分析

1、官方mmpsample程序总体分析       首先先将sample程序导入到source insight中,这样方便我们学习代码,导入的时候记得将include文件也导入进去。       sample里面不止一个程序。例如hifb文件夹,里面是和framebuff有关的,hi3519v101在做摄像头的时候,也可以使用这个程序,用于拍照时候实时显示用的。       commo...

2018-09-09 00:09:48 3410 1

原创 HI3519V101的MPP开发环境与venc测试

1.SDK目录介绍2.搭建ftp或者nfs文件系统3.mpp文件部署在一般的嵌入式开发中,只要将uboot,kernel,rootfs下载到开发板上,就可以进行程序开发了。但是海思又进一步的把一些常用视频编解码算法等封装到MPP平台中,进一步简化了工程师的开发难度。3.1什么是MPP海思提供的媒体处理软件平台(Media Process Platform,简称 MPP)...

2018-09-08 22:35:44 2931

转载 安装、升级Hi3519V101/Hi3516AV200 DEMO板开发环境

1.安装、升级Hi3519V101/Hi3516AV200 DEMO板开发环境# 如果您使用Hi3519V101/Hi3516AV200 的DEMO板,可以按照以下操作烧写uboot、内核以及文件系统,以下操作均使用网络来更新。      1)、如果您拿到的单板没有uboot的话,就需要使用Hi3519***/01.software/pc/HiTool进行烧写。更详细的烧写操作步骤及说明,...

2018-09-08 19:14:42 2664

转载 Shell中[]里面的条件判断---转载

1.字符串判断 str1 = str2 当两个串有相同内容、长度时为真 str1 != str2 当串str1和str2不等时为真 -n str1 当串的长度大于0时为真(串非空) -z str1 当串的长度为0时为真(空串)  ...

2018-09-08 09:10:54 354

原创 Linux驱动开发19之spi驱动模型的数据结构

1.SPI传输模式(各定义在include/linux/spi.h)先看一下这些和时序有关的:00075: #define SPI_CPHA 0x01 /* clock phase */   //时钟相位,数据采样时刻对应着的SCLK是第一个(0)还是第二个边沿(1)00076: #define SPI_CPOL 0x02 /* clock polarity */ //时钟极性,SCLK空...

2018-09-04 22:18:47 909

原创 linux驱动开发19之led平台驱动框架

1.以leds-s3c24xx.c为例来分析platform设备和驱动的注册过程1)platform_driver_register2)platform_device_register2.platdata怎么玩1)platdata其实就是设备注册时提供的设备有关的一些数据(譬如设备对应的gpio、使用到的中断号、设备名称••••)2)这些数据在设备和驱动match之后,会由设备...

2018-09-01 10:17:34 359

转载 6.内核日志级别与dmesg

转载!前几天,我在想printk中到底是哪些信息会打印到console上,哪些东西可以通过dmesg来查看。参考了网上一些资料以及自己做的一些实验,总结一下Linux中的console loglevel以及printk, dmesg知识。只有当printk打印信息时的loglevel小于console loglevel的值(即:优先级高于console loglevel),这些信息才会被打...

2018-08-29 23:11:18 4654

转载 Linux驱动开发16之再论register_chrdev_region

1.之前注册字符设备用的如下函数注册字符设备驱动:register_chrdev(unsigned int major, const char *name,const struct file_operations *fops);但其实这个函数是linux版本2.4之前的注册方式,它的原理是:(1)确定一个主设备号,如果major=0,则会自动分配设备号(2)构造一个file_ope...

2018-08-29 21:40:47 1942

原创 Linux驱动开发17之系统启动时platform_device在哪里注册?

1.系统启动的时候,platform_device的注册在哪里?答案:先去找启动过程中的C语言阶段,下面就是描述,我们一般看红色字体的部分。总结下来就是找:1)do_initcalls,这个比较分散,2)init_machine,这个比较集中,但实际上是被do_initcalls调用的!下面来具体分析一下。2.init_machine和do_initcalls的调用关系...

2018-08-28 23:25:35 752

原创 Linux驱动开发15之RTC驱动模型

1.需要的文件有哪些driver/rtc/class.c:         此文件向linux内核驱动模型注册了一个类RTC,同时为底层的RTC驱动提供了注册/注销RTC接口。同时实现了RTC相关的PM操作。driver/rtc/rtc-dev.c:      将各种各样的RTC设备抽象成一个字符设备,同时提供文件操作函数集。driver/rtc/rtc-sysfs.c:    用户可...

2018-08-27 23:26:39 385

转载 Linux驱动开发18之Linux字符驱动总结之:全自动创建设备及节点

/***************************************************************************************************                         linux字符设备驱动总结之:全自动创建设备及节点转载********************************************...

2018-08-27 23:22:17 230

原创 ubuntu16.04的samba服务器的搭建

搭建了好几次samba服务器,有两次没有搭建成功,也找不出原因。这里做一下记录成功的案例。1.安装sambasudo apt-get install sambasudo apt-get install smbclient2.修改配置文件1).等待安装完成,进入配置文件目录: cd /etc/samba/2). 将配置文件备份:这是个人习惯 sudo cp smb.c...

2018-08-26 18:16:53 252

原创 4.内核中的锁

1.为什么要加锁?假设我们需要处理一个队列上的所有请求。我们假定该队列通过链表得以实现,链表中每个节点就代表一个请求。有两个函数来操作此队列:一个函数将新请求添加到队列尾部,另一个函数从队列头删除请求,然后处理它。内核各个部分都会调用这两个函数,所以内核会不断地在队列中加入请求,从队列中删除和处理请求。对请求队列的操作无疑要用到多条指令。如果一个线程试图读取队列,而这时正好另一个线程正在处理该...

2018-08-26 11:26:46 1045

原创 Linux驱动移植14之中断上下部实现按键事件

1.中断的上下半部1.1中断处理的注意点1)中断上下文,不能和用户空间数据交互2)不能交出CPU(不能休眠、不能schedule)3)ISR运行时间尽可能短,越长则系统响应特性越差1.2中断下半部2种解决方案1)为什么要分上半部(top half,又叫顶半部)和下半部(bottom half,又叫底半部)上半部:登记、标记中断,调用下半部下半部:执行中断处理函数...

2018-08-25 20:36:44 394

原创 Linux驱动开发11之input子系统驱动

1.为什么要学习input子系统这里说要说明下:input子系统是独立于platform平台总线的。既然和总线无关,那么就是一类设备的驱动模型,就像misc设备驱动模型一样,所以必须要学习!2.什么是input子系统输入的一类设备。用于各种不同输入类设备的管理。linux系统中键盘、鼠标、触摸屏等输入设备的支持都通过、或越来越倾向于标准的input输入子系统。因为input子系统已经完...

2018-08-25 20:34:23 1049

原创 3.内核同步之竞争条件和临界区

1.为什么需要内核同步?1)在使用共享内存的应用程序中,程序员必须特别留意保护共享资源,防止共享资源并发访问。2)Linux作为多任务系统,能够同时运行几个进程。通常各进程必须尽可能保持独立,避免彼此干扰。但有时候应用程序必须彼此通信:一个进程生成的数据传输到另一个进程; 进程必须彼此等待时; 需要协调资源的使用时。多个进程对共享资源的并发访问,并发访问会导致竟态。用户空间应...

2018-08-22 23:32:04 672

转载 shell语法

1.shell脚本1.1使用shell脚本的原因       ---功能强大       ---节约时间1.2 shell脚本基本元素     #!/bin/bash1.3注意初学者易犯错误:1) 第一行#不是注释 其他#都是注释;2) echo $mytextA 写错现象;3) #!/bin/bash                 写错现象;  4)...

2018-08-19 19:23:57 270

转载 什么是shell?

1.shell:壳与封装1)shell就是壳的意思,在计算机中经常提到shell是用户操作接口的意思。2)因为计算机程序本身很复杂,里面的实现和外面的调用必须分开。接口本身就是对内部复杂的实现的一种封装,外部只需要通过接口就可以很容易的实现效果,但是却不用理会内部实现的复杂性和原理。1.1程序或操作系统的用户接口1)操作系统运行起来后都会给用户提供一个操作界面,这个操作界面就叫sh...

2018-08-19 19:19:29 1444

原创 Linux驱动开发13之再论platform平台总线

1.平台总线体系工作流程第一步:定义初始化platform bus,并注册platform到内核,在/sys目录下出现各种相关设备第二步:内核移植人员提供platform_devices,定义各种platform_devices,然后注册第三步:写驱动的人负责提供platform_driver,定义相关的platform_driver,然后注册第四步:platform的match函...

2018-08-19 19:15:01 1115 2

原创 Linux驱动开发12之再论I2C 驱动模型之device

1.驱动工程师所关心的东西首先作为驱动工程师移植I2C驱动的时候,除了I2C驱动框架之外,最关心的是什么?使用的是哪个管脚,如果更改怎么办? I2C的时钟哪里来?I2C的速率是多大?怎样修改?时序怎样? I2C主从模式怎样设置的? 在控制台命令行,怎样验证I2C驱动的移植是正确的,有哪些方法?  怎样验证通过I2C去读写一个设备的寄存器? 一条总线上挂载多个设备,怎样移植? 如...

2018-08-19 16:05:14 504

原创 2.内核中链表的创建、挂接与遍历

1.普通链表普通链表是将数据结构中嵌入链表指针,比如next或者previous节点,可以制作单向链表、双向链表、环形链表等。 2.内核链表内核链表是将链表节点塞入数据结构。链表代码在<linux/list.h>中声明。19: struct list_head {20: struct list_head *next, *prev;21: };Next指向下一个链...

2018-08-15 21:23:45 1421

原创 官方标准uboot移植3之Makefile概述

1.烧录步骤bash脚本的编写我们需要更智能化的编写处理程序。2.makefile文件的编写2.1Makefile的作用和意义1)工程项目中c文件太多管理不方便,因此用Makefile来做项目管理,方便编译链接过程。2)uboot和linux kernel本质上都是C语言的项目,都由很多个文件组成,因此都需要通过Makefile来管理。所以要分析uboot必须对Makefi...

2018-08-13 20:43:10 196

原创 官方标准uboot2013移植4之编写自己的uboot

1.由源码到可执行程序的过程1)源码.c->(编译)->elf可执行程序2)源码.c->(编译)->目标文件.o->(链接)->elf可执行程序3)源码.c->(编译)->汇编文件.S->(汇编)->目标文件.o->(链接)->elf可执行程序4)源码.c->(预处理)->预处理过的.i源文件-&a

2018-08-13 20:43:05 268

原创 官方标准uboot移植5之uart显示某指定内存中的数据

1.首先我们要知道我们想看到哪个地址的数据,这里进行举例,我们想看到芯片的ID,对应的地址为: 0XE00000002.写一个汇编语言函数很明显,我们要看的地址放在r0中,那么我们的函数display_addr_data主要就是针对r0进行的操作。3.汇编语言函数的内容1)首先将r0寄存器的内容赋值给r0;2)然后分别打印0x;3)对数据右移28位,结果保存在r...

2018-08-13 20:42:53 273

原创 官方标准uboot2013移植6之重定位

1.在重定位代码前加调试信息定位1)逻辑上来说,重定位部分代码应该在DDR初始化之后和uboot第二阶段来临前之间。2)uboot的第一阶段和第二阶段的划分并不是绝对的,唯一必须遵循的原则就是第一阶段不能大于8KB。所以uboot的第一阶段最少要完成DDR初始化和重定位,最多不能超过8KB。在满足这些条件时,第一阶段和第二阶段的接点可以随便挑。3)找到合适的地方来写重定位代码,重定位之...

2018-08-13 20:42:47 342

原创 官方标准uboot2013移植7之DDR初始化

1.分析1)cpu_init_crit函数成功初始化串口、时钟后,转入_main函数,函数在arch/arm/lib/crt0.S文件中。2)在crt0.S中首先设置栈,将sp指向DDR中的栈地址;然后调用board_init_f函数进行板级初始化。函数在arch/arm/lib/board.c中。3)在这个版本的uboot中,把以前uboot的第二阶段start_armboot函数分...

2018-08-13 20:42:41 1737

原创 官方标准uboot2013移植8之串口界面信息打印

1.banner 信息补全从crt0.S看,找到board_init_f,然后找到Board.c (z:\uboot\uboot2013\u-boot-2013.10.bak\arch\arm\lib)。找到init_sequence。看下display_banner.自己定义一个:结果:2.CPU信息补全回到init_sequence。看下...

2018-08-13 20:42:34 1447

原创 官方标准uboot2013移植9之SD卡移植

1.uboot2013.10中SD/MMC驱动浏览1.1相关函数和文件drivers/mmc/mmc.c、drivers/mmc/sdhci.cboard/samsung/goni/goni.carch/arm/include/asm/arch-s5pc1xx/mmc.h2.当前错误定位及解决方案分析1)错误发生路径定位board_init_r         ...

2018-08-13 20:42:29 1213

原创 官方标准uboot2013移植10之环境变量和网卡的移植

1.iNand分区表检查-env究竟应该放在哪1)测试环境变量是否可以保存,通过开机set设置环境变量然后save,然后关机后重启来测试环境变量的保存是否成功。2)我们的环境变量究竟保存到哪里去了?这个就要去分析代码中的分区表。3)环境变量应该被放在哪里?虽然无法确定ENV一定要放在哪里,但是有一些地方肯定是不能放的,否则将来会出问题。原则是同一个SD卡扇区只能放一种东西,不能叠加,否...

2018-08-13 20:42:23 1167

空空如也

空空如也

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

TA关注的人

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