- 博客(24)
- 资源 (37)
- 收藏
- 关注
原创 MDIO总线相关_4
//mdio在drivers/net/ethernet/hieth-gmac/下面有一个文件higmac.c里面实现了一个platform框架,并且创建了一个杂项设备. ret = platform_device_register(&higmac_platform_device); if (ret) { pr_err("register netd
2017-03-29 23:40:09 1093
原创 MDIO总线相关_3
这里主要是匹配总线匹配struct bus_type mdio_bus_type = { .name = "mdio_bus", .match = mdio_bus_match, .pm = MDIO_BUS_PM_OPS, .dev_attrs = mdio_dev_attrs,};从上面的结构体可以看出,linux中有多种总线类型
2017-03-28 22:34:15 684 3
原创 MDIO总线相关_2
这里主要是device端在drivers/net/ethernet/中有各品牌的文件,一个品牌对应一个文件夹一个文件夹下有多个文件,一个文件对应一个品牌下设备.platform_driver_register(&smsc911x_driver)static struct platform_driver smsc911x_driver = { .probe = smsc911x_drv_pr
2017-03-28 22:31:17 2287
原创 MDIO总线相关_1
这里主要是driver端在drivers/net/phy里面针对某一品牌的网络交换设备有一个文件 例如 smsc ,有一个smsc.c该品牌有多个设备.每个设备对应一个结构体,因此组成了一个结构体数组数组元素类型 : struct phy_driver数组元素举例{ .phy_id = 0x0007c0f0, /* OUI=0x00800f, Model#=0x0f */ .
2017-03-28 22:27:19 773
原创 I2C总线相关_5
static const struct i2c_algorithm hi_i2c_algo = { .master_xfer = hi_i2c_xfer, .functionality = hi_i2c_func,};//这个结构体是驱动端的.通过adapter?适配到device端//也就是说在总线上创建一个device,最终会调用到这个结构体里面的函数static
2017-03-28 22:24:11 2681
原创 I2C总线相关_4
I2C会话分为两种 一种是读会话,一种是写会话 这两种会话都有固定的格式,按照数据手册上的时序写就行了下面提供的是标准的I2C时序特别注意下面的DELAY(x) 宏,你可以定义为你需要的时间.时间可以从芯片手册中得知.注意:I2C可以由内核中I2C框架实现,也可以用GPIO模拟I2C来实现. 两者的切换需要配置复用寄存器//写会话EXPORT_SYMBOL(gpio_i2c_write);
2017-03-28 20:33:20 360
原创 I2C总线相关_3
一个i2c架构struct platform_device hi_i2c0_device = { .name = HI_I2C, .id = 0, .resource = hi_i2c0_resources, .num_resources = ARRAY_SIZE(hi_i2c0_resources), .dev =
2017-03-27 21:44:13 382
原创 I2C总线相关_2
/** * I2C_BOARD_INFO - macro used to list an i2c device and its address * @dev_type: identifies the device type * @dev_addr: the device's address on the bus. * * This macro initializes essential f
2017-03-27 17:41:52 404
原创 I2C总线相关_1
关于I2C经验I2C有两根线,一根提供时钟(始终都是由主端提供的)一根提供数据先不说时序先确定一个一个时钟 多少事件一般是400khz然后读 i2c的话一般要确定芯片地址i2C上可以挂很多东西例如AD 时钟芯片 每个芯片都有一个地址i2c在文件系统中表现为dev目录下的一个文件.调用相应的接口读就行了.读的时候先确定地址然后确定 芯片中的寄存器地址然后就能读到 了 device端platfo
2017-03-27 16:39:31 605
原创 platform总线相关_3
probe 里面要做的事情1/从platform_device结构体中获取资源platform_get_resourceioremap2/创建设备?3/初始化4/提供ops
2017-03-27 00:20:26 601
原创 platform总线相关_2
对于platform来说,最重要的是填充 platform_device 和platform_driver两个结构体先说platform_device,因为platform_driver在匹配成功之后会拿到platform_device的资源. 1/platform_device/*include/linux/platform_device.h*/struct platform_device
2017-03-26 23:49:27 434
原创 platform总线相关_1
platform架构在内核中有很多设备都是写在platform伪总线上的.这个架构分为几个部分一个是platform_driver 设备操作函数一个是platform_device 设备相关资源一个是 platform_bus_type platform_match函数利用platform_device里的name和platform_driver里的driver的name来匹配.1/p
2017-03-26 22:56:39 699
原创 CGI中对前端数据的处理
前端 method 有两种取值 1. GET 2. POST下面的程序完成了兼容GET与POST方式的数据处理 最后形成的字符串格式为name1=value1&name2=value2&name3=value3 ...... namei=vaulei ...... namen=valuen//当value为空时,value被填空实例:chn1=&chn2=2&chn3=3&chn4=&c
2017-03-22 13:59:43 1470
原创 CGI
CGICGI叫做通用网关接口,用作前台和后台交互,可以用多种语言中的任何一种来写下面我用C语言来写用C语言来写有两种方式1/调用别人写好的库,我找的库是cgic库完成这个实例有3个文件,分别是cgic.c / cgic.h / test.c/*cgic.c cgic.h 就是 cgic库,在我的下载资源中有*//*test.c*/#include <stdio.h>#include <std
2017-03-22 13:31:53 797
原创 linux启动盘制作
Linux启动盘制作一般启动盘是用来做PE的 但是一些Linux发行版也可以装载U盘上,而我们要做的就是将系统装在U盘。windows下面制作1/软碟通最好下最新版本文件 打开 选择文件启动 写入硬盘镜像格式化写入2/Universal USB Installer免安装3/Win32 Disk I...
2017-03-21 19:38:07 890
原创 根文件系统的制作
根文件系统的制作制作的根文件系统必须符合FHS标准 根文件系统里有bin boot dev etc home lib media mnt opt root sbin srv tmp proc sys lost+found目录制作1/其中 bin sbin usr 文件夹,linuxrc文件 是用busybox 做出来的.参考编译busybox做出来的其他都是用mkdir做出来的.2/dev目录
2017-03-15 22:51:26 835
原创 编译glibc
glibcglibc源码在这里下,下的是glibc-2.25.tar.gz1/配置glibc很怪,必须在源码目录外执行./glibc-2.25/configure --prefix=/usr/local/gcc_install --host=arm-hisiv300-linux该条命令会在工作目录下生成Makefile和其他文件2/编译在运行上一条命令的目录下执行,编译时间很长make3/
2017-03-15 22:50:34 1739
原创 编译busybox
busybox编译busybox是一个源码包,可以编译生成一些列linux下常用的工具.从这里下载的busybox-1.26.2.tar.bz21/配置make menuconfigBusybox Settings ---> [ ] Build BusyBox as a static binary (no shared libs) //上面这个选项是一定要选择的,这样才能把b
2017-03-15 21:26:41 2875
原创 编译uclibc
uclibc从这里下的uClibc-0.9.33.2.tar.bz21/解压tar xvf uClibc-0.9.33.2.tar.bz22/配置进入目录后make menuconfig之后出来一个配置框Target Architecture (i386) ---> 进入之后,选中armTarget Architecture Features and Options --->
2017-03-15 20:32:26 5246
原创 嵌入式启动顺序 - uboot
声明:可能有错,我只是在记笔记.这个uboot启动过程这部分,其实可以通过分析源码得到.我这里又增加了uboot启动之前的一部分过程.就嵌入式来讲,我们只关心这一过程上电,…,uboot第一阶段被加载至SRAM,…,uboot第二阶段加载内核到SDRAM.下面的四个部分,不是启动的顺序,而是四个模块系统启动的时候可以通过1-&gt;2-&gt;3-&gt;4,也可以通过1-&gt;3-&gt;4来达到引导内核启动1/上电执行块:
2017-03-13 21:02:52 3007
原创 linux-x86-发行版一般启动顺序
linuxPC发行版一般启动顺序一般linuxPC发行版都经历了BIOS,MBR,BootLoader,内核,一系列过程,下面说的就是这个过程针对嵌入式设备启动请参考嵌入式启动顺序为什么强调PC发行版呢?因为现在有专门为arm做的linux发行版问世了PC一般用的是intel 或者amd 处理器,架构一般为 x86 或者 x86_64按电源键性质: 硬件
2017-03-05 22:53:35 767
原创 链接过程解析
编译简介广义上的编译分为四个过程,分别是预处理gcc -E helloworld.c -o helloworld.i 编译gcc -S helloworld.i -o helloworld.s 汇编gcc -c helloworld.s -o helloworld.o 链接gcc helloworld.o -o helloworld 链接链接分为动态链接和静态链接 就一个库来...
2017-03-02 20:34:59 617
原创 编译时连接与运行时链接及静态库链接
编译时连接与运行时链接的参考路径//动态库编译时链接-L/lib /usr/lib /usr/local/lib编译时链接的话,能查到libname.so且这个文件要不是个link,要不就是实际的动态库文件,否则会报错说链接顺序没有意义,因为并不链接到文件里面去//动态库运行时链接1. 编译目标代码时指定的动态库搜索路径;-Wl,-rpath,2. 环境变量 LD_LIBRARY_
2017-03-01 22:34:10 4546 1
原创 GCC预处理时头文件搜索路径
GCC预处理时头文件搜索路径//测试系统信息linux@ubuntu:~$ uname -a Linux ubuntu 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:15:33 UTC 2013 i686 i686 i386 GNU/Linuxlinux@ubuntu:~$ cat /proc/versionLi
2017-03-01 21:31:46 1104
freetype2+SDL+SDL_ttf源码包及字符串转bmp图片demo
2017-03-07
linux-5.17 arm32 arm64 rv64 arch 下的 共同函数
2022-06-16
grub-build.log
2020-11-22
sdio_data_AllInOne.rar
2019-09-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人