- 博客(30)
- 收藏
- 关注
原创 Your dtc is too old, please upgrade to dtc 1.4 or newer
Ubuntu16.04 64bit环境下编译u-boot-at91,出现以下问题: CC net/checksum.o CC net/arp.o CC net/bootp.o CC net/eth-uclass.o CC net/eth_common.o CC net/net.o CC net/nfs.o CC ...
2018-07-05 17:09:44 2824 1
原创 网卡驱动(2)——移植DM9000驱动
移植DM9000驱动:1、找出相异性,修改2、设置memory controller(位宽、时序等)修改驱动:(1)增加头文件#include <asm/delay.h>#include <asm/irq.h>#include <asm/io.h>#include <asm/arch-s3c2410/regs-mem.h>(2)注释掉版本信息判断 /...
2018-06-09 13:00:22 481
转载 网卡驱动(1)——虚拟网卡
/* * 参考 drivers\net\cs89x0.c */#include <linux/module.h>#include <linux/errno.h>#include <linux/netdevice.h>#include <linux/etherdevice.h>#include <linux/kernel.h>...
2018-06-09 11:05:06 1496
原创 块设备驱动(3)——nand flash驱动
/* 参考 * drivers\mtd\nand\s3c2410.c * drivers\mtd\nand\at91_nand.c */#include <linux/module.h>#include <linux/types.h>#include <linux/init.h>#include <linux/kernel.h>#...
2018-05-31 09:32:59 366
转载 块设备驱动(2)——uboot操作nand flash
1. 读ID S3C2440 u-boot 选中 NFCONT的bit1设为0 md.l 0x4E000004 1; mw.l 0x4E000004 1发出命令0x90 ...
2018-05-30 19:00:31 402
原创 块设备驱动(1)——内存模拟硬盘
/* 参考: * drivers\block\xd.c * drivers\block\z2ram.c */#include <linux/module.h>#include <linux/errno.h>#include <linux/interrupt.h>#include <linux/mm.h>#include <li...
2018-05-24 17:03:12 674
原创 tcp服务端程序设计——只允许一个客户端连接
void *panel_tcp_server(void *arg){ int server_sockfd; socklen_t server_len, client_len; struct sockaddr_in server_address; struct sockaddr_in client_address; while(1) { server...
2018-05-24 10:11:20 4128
原创 SPI驱动(1)——框架认识
枚举过程(drivers/spi/spi.c)spi_register_board_info /* 对于每一个spi_master,调用spi_match_master_to_boardinfo */ list_for_each_entry(master, &spi_master_list, list) spi_match_mast...
2018-05-12 13:44:28 1134
原创 JZ2440 SPI(1)——初始化
初始化:static void SPIControllerInit(void){ /* OLED : 100ns, 10MHz * FLASH : 104MHz * 取10MHz * 10 = 50 / 2 / (Prescaler value + 1) * Prescaler value = 1.5 = 2 * Baud rate = 50/2/3=8.3M...
2018-05-12 11:27:54 603
原创 I2C驱动(2)——读写eeprom
#include <linux/kernel.h>#include <linux/init.h>#include <linux/module.h>#include <linux/slab.h>#include <linux/jiffies.h>#include <linux/i2c.h>#include <l...
2018-05-11 10:24:56 1021
原创 I2C驱动(1)——框架认识
I2C驱动划分为I2C总线驱动(i2c_adapter)和I2C设备驱动(i2c_driver),一种变异的总线驱动设备模型。1、I2C总线驱动知道I2C协议、知道如何发出I2C信号,但是不知道数据的含义(/drivers/i2c/buses/*)。2、I2C设备驱动知道数据的含义,但是不知道怎么发出信号(/drivers/i2c/chips/*)。I2C总线驱动程序1、分配i2c_adapter...
2018-05-11 10:10:23 302
原创 总线驱动设备模型(2)——点亮led
#include <linux/module.h>#include <linux/version.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/types.h>#include <linux/interrupt.h>#incl...
2018-05-09 10:35:59 399
原创 总线驱动设备模型(1)——框架认识
输入子系统体现了驱动程序的分层分离的思想:1、核心层input.c,输入子系统的核心2、evdev.c,驱动程序的纯软件部分,input_register_handler注册handler,代码稳定3、buttons.c,驱动部分的硬件相关部分,input_register_device注册device,根据硬件及需求修改总线驱动设备模型:1、总线驱动设备模型只是提供一种机制,将驱动程序分为dev...
2018-05-09 10:04:28 699
原创 输入子系统(2)——按键实现
/* 参考drivers\input\keyboard\gpio_keys.c */#include <linux/module.h>#include <linux/version.h>#include <linux/init.h>#include <linux/fs.h>#include <linux/interrupt.h>...
2018-05-07 09:37:10 290
原创 输入子系统(1)——框架认识
入口函数:drivers/input/input.c: input_init > err = register_chrdev(INPUT_MAJOR, "input", &input_fops); static const struct file_operations input_fops = { .owner = THIS_MODULE, .open = i...
2018-05-06 16:49:01 206
原创 字符设备驱动(4)——按键定时器消抖
#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/delay.h>#include <linux/irq.h>#include <asm/u...
2018-05-04 15:09:04 271
原创 字符设备驱动(3)——异步通知
#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/delay.h>#include <linux/irq.h>#include <asm/u...
2018-05-04 14:10:41 172
原创 字符设备驱动(2)——按键中断
#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/delay.h>#include <linux/irq.h>#include <asm/u...
2018-05-03 21:07:35 219
原创 字符设备驱动(1)——点亮led
#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/delay.h>#include <asm/uaccess.h>#include <asm...
2018-04-27 21:25:34 359
原创 JZ2440 NAND
设置好时序参数后,发送命令直接写NFCCMD,发送地址直接写NFADDR,写数据直接写NFDATA,读数据直接读NFDATA,控制器会发出相应的时序波形,从而控制NAND FLASH。Ø 初始化void nand_init(void){#define TACLS 0#define TWRPH0 1#define TWRPH1 0 /*设置NAND FLASH的时序*/ ...
2018-04-25 10:54:11 407
原创 JZ2440 SDRAM
void sdram_init(){ BWSCON = 0x22000000; BANKCON6 =0x18001; BANKCON7 =0x18001; REFRESH = 0x8404F5; BANKSIZE =0xB1; MRSRB6 = 0x20; MRSRB7 =...
2018-04-25 10:45:41 201
原创 JZ2440串口
//115200,8,n,1void uart0_init(){ //GPH2,3用于TXD0,RXD0 GPHCON &= ~((3<<4) |(3<<6)); GPHCON |= ((2<<4) | (2<<6)); //使能内部上拉 GPHUP &= ~((1<<2) |(1&...
2018-04-25 10:43:21 314
原创 JZ2440时钟
硬件上电选择时钟源:时钟生成路线:寄存器设置:void clock_init(){ LOCKTIME= 0xFFFFFFFF; //CLKDIVN,FCLK= 400MHz,HCLK = FCLK / 4 = 100MHz,PCLK = HCLK / 2 = 50MHz CLKDIVN = 0x5; //MPLLCON,Mpll= ...
2018-04-25 10:40:19 261
原创 uboot启动内核
uboot流程分为第一阶段(芯片初始化、重定位等)和第二阶段(各项功能),在第二阶段的最后,启动内核1、s = getenv ("bootcmd"); //"nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0"2、run_command (s, 0);读内核到SDRAM:(1)NAND FLASH分区#define MTDPARTS_DEF...
2018-04-25 10:11:45 157
原创 Jz2440_yaffs2文件系统制作
开发板:JZ2440目标:制作支持telnet、ftp功能的yaffs2文件系统主机linux:ubuntu 9.10内核版本:linux2.6.22.6交叉编译器:arm-linux-gcc 3.4.5busybox:busybox-1.21.0.tar.bz2 1.编译busybox(1).修改MakefileCROSS_COMPILE ?=ARCH ?= $(SUBAR...
2018-04-24 14:25:36 410
原创 Jz2440烧写系统
Linux-2.6.22步骤:1、 openjtag烧写u-boot:(oflash与文件在同一目录)oflash 0 1 00 0 u-boot.bin2、 u-boot下烧写系统(TFTP)关闭防火墙; tftp 30000000uImage_4.3 nand erase kernel nand write.jffs2 30000000 kerneltftp 30000000 fs_min...
2018-04-24 14:01:25 535
原创 init进程分析
uboot传递启动参数:root=/dev/mtdblock3 init=/linuxrc console=ttySAC0 kernel启动第一个程序:1、函数mount_root挂载分区root=/dev/mtdblock32、打开设备/dev/console3、启动第一个程序run_init_process("/linuxrc") //linuxrc与/sbin/init相同 ----...
2018-04-24 13:50:03 308
原创 存储分布图
JZ2440内存SDRAM大小64M(0x30000000~0x34000000),NAND大小256M。uboot重定位起始地址为0x33F80000,预留空间512k,包含代码段和bss段。NAND FLASH中依次存放uboot、parameters、kernel、root。重定位过程将uboot代码从NAND FLASH中拷贝到SDRAM的地址0x33F80000,并跳转到SDRAM中继续...
2018-04-24 11:01:10 442
原创 内核模块设计初步
一个简单的内核模块包含: 1、头文件 linux/init.h、linux/module.h 2、加载函数 module_init 3、卸载函数 module_exit另外,可选信息: 1、模块申明 MODULE_LICENSE(”遵守的协议”) MODULE_AUTHOR(“作者”) MODULE_DESCRIPTION(“模块的功能描述”) MODULE_VERSION(...
2016-08-31 14:34:43 157
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人