- 博客(13)
- 收藏
- 关注
原创 视频基本知识
一个序列的第一个图像叫做IDR图像(立即刷新图像)。只要显示屏幕分辨率>=1280*720即可分为HD等级。SPS(序列参数集)/PPS(图像参数集):包含了初始化H.264解码器所需要的信息参数,包括编码用profile,level,图像宽和高,deblock滤波器H.264把图像分为一帧(frame)或两场(filed);帧又分为片(slice),片由宏块(MB)组成,宏块是编码处
2016-02-23 21:19:17 1009
原创 Ethernet/IP
之前花了一段时间看过Ethernet/IP的东西,虽然最后没有移植成功,但是依旧是学到了不少的东西。 熟悉了STM32F407的开发板,在大学期间,有上过嵌入式系统这门课用的是STM32F103系列的,也算是对这次任务打下了一定的基础。 了解了LwIP协议和uc/os ii实时操作系统。 对协议栈也有了一定的概念。
2016-02-22 22:22:15 7502 3
原创 linux启动代码分析
在bootloader将linux的uImage搬到指定内存空间地址并且引导linux内核启动后,linux首先从arch/xxx_cpu/kernel/head.S先一步一步执行汇编代码。 (1)加载bootloader_tags的地址 (2)使能指令cache (3)使能数据cache (4)使能MMU (5)初始化TLB (6)建立中断异常向量表 (
2016-02-21 20:45:23 1991
原创 linux下模块编译基本知识和格式
Make -c 只编译不链接Make -C切换到指定目录再执行make过程make -C $(LINUXROOT) M=$(PWD)EXTRA_CFLAGS="$(EXTRA_FLAGS)" modules当用户需要以某个内核为基础编译一个外部模块的话,程序会自动到指定的dir目录中查找模块源码,将其编译,产生ko文件。
2016-02-21 15:49:39 1155
原创 linux下I/O体系结构和设备驱动程序
一台计算机包括集中不同类型的总线,它们通过被称为“桥”的硬件设备连接在一起。任何I/O设备有且仅能连接一条总线。linux内核包含了辅助函数来简化汇编语言指令的访问I/O端口(inb(),inb_p(),outb(),outb_p()).通常I/O设备驱动程序为了探测硬件设备,需要盲目地向某一I/O端口写入数据,但是,如果其他硬件设备已经使用了这个端口,那么系统就会崩溃,为了防止这种情
2016-02-21 14:04:13 1040
原创 linux下VFS
通用文件模型由下列对象类型组成:超级块对象:存放已安装文件系统的有关信息索引节点对象:存放关于具体文件的一般信息文件对象:存放打开文件和进程之间交互的有关信息目录项对象:存放目录项与对应文件进行链接的有关信息 所有的超级块对象都以双向循环链表的形式链接在一起。 任何基于磁盘文件系统都需要访问和更改自己的磁盘分配位图,以便分配或释放磁盘块。 文件系统处理文件所需要的
2016-02-20 14:51:51 444
原创 linux下中断子系统
request_irq(). request_thread_irq().//分配中断资源,使能中断线和中断处理函数。 几个比较关键的数据结构struct irqactionstruct irq_descstruct irq_chip //hardware interrupt chip descriptor在arch/xxx_cpu/xxx_sys/irq.c下
2016-02-16 22:34:32 1337
原创 linux下网络驱动
在stmmac_dvr_probe函数中,一开始获取linux中的硬件资源,分配一个网络设备的内存空间alloc_etherdev(本质还是调用alloc_netdev_mqs()).,接下来比较重要的是stmmac_mac_device_setup()函数。里面将mac_device_info中的三个operations注册了回调函数,以便让接下来的函数stmmac_probe()进行调用。
2016-02-15 22:20:56 1152
原创 linux下SPI驱动
进入xxx_spi_probe()函数,首先分配spi_master内存空间,spi主控制器被抽象为spi_master spi_bitbang是对spi主控制器的硬件操作函数和参数的封装。 在probe中要注册上面这些回调函数。 之后就是获得一些platform的资源(时钟,中断,内存空间等),再对spi主控制器进行复位(控制,地址,数据和命令进行写零操作)。 之后调用s
2016-02-15 21:41:07 875
原创 linux下TTY驱动(serial)
之前因为是刚入门所以看了串口有关的东西,一开始看了stm32f407上的串口编程(Keil MDK),那算是裸的驱动了。 linux下的串口如果要正常工作的话,就必须通过TTY这个子系统,TTY子系统算是比较复杂,概念也是比较复杂的,有三类驱动程序:控制台,串口,pty。任何tty驱动程序的主要数据结构是结构tty_driver.概念性的问题还是去看一下《linux设备驱动程序》这本书,它也
2016-02-15 20:28:35 3966
原创 linux下I2C驱动
说起Linux下的子系统,I2C子系统已经算是比较简单的框架了。 首先相关代码在driver/i2c下.built-in.o.cmd .i2c-dev.o.cmd algos/ i2c-boardinfo.c i2c-core.h i2c-dev.o muxes/.i2c-boardinfo.o
2016-02-14 21:48:29 1187
原创 platform_device和platform_driver
上班已经3个月了,本来就打算工作中有什么收获就能够写出来的,虽然这段时间里看了很多linux子系统(I2C,TTY,SPI,MTD,网络,USB)相关的内容,但是,因为没有做过比较多的实践经验,所以不敢马上写出来,但是又怕过了段时间很多东西都忘了,所以还是先把这段时间的感悟和心得写下来。如果要开始写linux系统的话,我觉得就不得不从platform_device和platform_driver开
2016-02-14 19:59:53 775
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人