自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 linux下LCD编程

一、Linux的帧缓冲设备帧缓冲(framebuffer)是 Linux 为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer 设备驱动来完成的。帧缓冲驱动的应用广泛,在 linux 的桌面系统中,Xwindow 服务器就是利

2014-06-16 15:51:17 418

转载 在linux内核里面设置LCD参数

LCD的参数设定是需要根据LCD的手册来设定arch/arm/mach-s3c2440/mach-smdk2440.c里面的s3c2410fb_display smdk2440_lcd_cfg结构体例如从LQ035NC111的手册可以得到如下一个表该表描述了该款并行LCD的所有时钟需求,在这里我参照的全是典型值“Typ”栏一个很具有参考价值的文档文件是Documentation

2014-06-16 13:44:45 462

转载 inittab文件

一、inittab文件背景(1)init进程的作用   使用uboot下载Linux内核时,环境变量bootargs决定了kernel向根文件系统传递的参数,这些参数包括      bootargs=noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0   root:指定了根文件系统在Flash分区中的位置   c

2014-06-12 22:32:31 378

原创 u-boot中的命令

1、命令相关的函数和定义  @main_loop:这个函数里有太多编译选项,对于s3c2440,去掉所有选项后等效下面的程序  void main_loop()   {    static char lastcommand[CFG_CBSIZE] = { 0, };    int len;    int rc = 1;    int flag;     char *

2014-04-28 19:02:37 355

原创 u-boot的流程、主要的数据结构、内存分配

1、u-boot的启动流程:  从文件层面上看主要流程是在两个文件中:cpu/arm920t/start.s,lib_arm/board.c,   1)start.s    在flash中执行的引导代码,也就是bootloader中的stage1,负责初始化硬件环境,把u-boot从flash加载到RAM中去,然后跳到lib_arm/board.c中的start_armboot中去执行

2014-04-28 18:26:51 340

原创 u-boot总体结构

本文和接下来几篇u-boot文章dous

2014-04-28 15:35:59 348

原创 将模块加入内核Kconfig

当编译了模块后,如果希望模块随系统一起启动,那么需要将模块静态编译进内核。将模块静态编译入内核,需要完成一些必要的步骤。一、向内核添加模块向Linux内核添加驱动模块,需要完成4个工作。1、编写驱动程序文件。2、将驱动程序文件放到Linux内核源码包的相应目录中,如果没有合适的目录,可以自己建立一个目录存放驱动文件程序文件。3、在目录的Kconfig文件中添加新驱动程序对应的项

2014-04-03 23:39:27 658 1

原创 Linux下串口通信编程

一、串口程序需要的头文件#include          //标准输入输出定义#include         //标准函数库定义#include        //Unix标准函数定义#include #include #include           //文件控制定义#include      //POSIX中断控制定义#include         /

2014-04-02 19:45:41 590 2

原创 Linux 下串口通信编程

int open_com(char *device_name){ int fd = 0;/*O_RDWR以读写的方式打开,O_NOCTTY是通知Linux系统这个程序不会成为这个端口的控制终端*/ if (0 > (fd = open(device_name, O_RDWR|O_NOCTTY))) { perror("Open Comport Fail:

2014-04-02 19:19:23 72

原创 stm32之CAN(二)

下面这个例程是通过CAN接收中断来实现CAN的回环测试。当测试成功时,LED2点亮,并且通过串口打印。如下代码:main.c#include "stm32f10x.h"#include "led.h"#include "usart1.h"void USART1_Configuration(void);void LED_GPIO_Configuration(void);voi

2014-03-28 23:04:07 579

原创 stm32之CAN(一)

前面博客已经具体讲述了CAN的通信协议和stm32中bxCAN的通信协议,下面我们就具体实战啦!首选一个简单的例程,是采用stm32中bxCAN的回环模式来进行测试。所谓的回环模式就是自己给自己发数据进行测试,想清楚的了解请看上一篇测试模式。当测试成功时开放板上LED1亮,并且可以通过串口打印。下面就直接上代码:main.c#include "stm32f10x.h"#include

2014-03-28 22:55:20 845

原创 stm32之RS485

stm32的rs485和rs232都是用到串口通信USART,寄存器的配置几乎一样,rs485用USART2,前面博客已经讲了如何配置串口,以及rs485协议,在这里就不再多提。下面直接讲如何设置,开发板的电路如下:本模块使用的是SP3490芯片是一种485全双工收发芯片。下面讲一下程序设计要点:1.配置RCC寄存器组,使用PLL输出72MHz时钟并作为主时钟源。2.配置G

2014-03-27 23:19:51 1852

原创 stm32之USART

重温串口的通讯协议,我们知道要配置串口通讯,至少要设置以下几个参数:字长(一次传送的数据长度)、波特率(每秒传输的数据位数)、奇偶校验位、还有停止位。对ST库函数的使用已经上手的读者应该能猜到,在初始化串口的时候,必然有一个串口初始化结构体,这个结构体的几个成员肯定就是有来存储这些控制参数的。串口工作过程分析波特率控制 波特率,即每秒传输的二进制位数,用 b/s (bps)表示,通过对

2014-03-20 21:11:54 556

原创 stm32之systick

认识一下systickCortex-M3在内核部分 包含了一个简单的定时器——SysTick  timer.在STM32中SysTick 以  HCLK(AHB时钟)或HCLK/8  作为运行时钟。SysTick定时器能产生中断,CM3为它专门开出一个异常类型,并且在中断向量表中有它的一席之地。SysTick定时器除了能服务于操作系统之外,还能用于其它目的:如作为一个闹铃,用于测量时间等。

2014-03-20 17:56:31 480

原创 stm32库初认识

STM32库是由ST公司针对STM32提供的函数接口,即API (Application Program Interface),开发者可调用这些函数接口来配置STM32的寄存器,使开发人员得以脱离最底层的寄存器操作,有开发快速,易于阅读,维护成本低等优点。stm32结构及库层次关系1.CMSIS标准可见CMSIS层位于硬件层与操作系统或用户层之间,提供了与芯片生产商无关

2014-03-15 00:38:26 649

原创 stm32时钟

下面是从网上找的一张stm32时钟图在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。        ①、HSI是高速内部时钟,RC振荡器,频率为8MHz。  ②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。  ③、LSI是低速内部时钟,RC振荡器,频率为40kHz。  ④、LSE是低速外部时钟,接频率

2014-03-14 20:34:46 559

原创 RS-232与RS-485

一、RS-232       RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(recommeded standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。。它规定连接电缆和机械、电气特性、信号功能及传

2014-03-08 09:51:28 957

原创 写一个函数,获取某张网卡的IP地址

写一个函数,获取某张网卡的IP地址,函数原型为: int get_ipaddr(char *intf, char *ipaddr)返回值: 0表示成功, -1表示失败输入参数:  intf这是网卡的名字,譬如第一张网卡传参为"eth0"输出参数: ipaddr是返回的IP地址放到这个buf里,注意不要溢出;程序设计提示:1, 使用pipe创建一个管道,并使用fork()创建

2013-11-02 09:26:18 548

原创 我的APUE学习笔记(三)

第三章:文件I/O 1、文件I/O包括不带缓存的(unbuffered)I/O和标准I/O。所有的磁盘I/O都有经过内核的块缓存器(唯一例外的是对原始磁盘设备的I/O)。术语“不带缓存的I/O”指的是在用户的进程中对read和write不会自动缓存,每次read或write就要都要调用内核中的一个系统调用。不带缓存的read和write是相对于标准I/O的fread、fwrite等流函

2013-10-12 15:10:08 86

原创 我的APUE学习笔记(一)

第一章:UNIX基础知识 1、系统在其口令文件,通常是/ e t c / p a s s w d文件中查看登录名。口令文件中的登录项由7个以冒号分隔的字段组成:登录名,加密口令,数字用户I D ( 2 2 4 ),数字组I D ( 2 0 ),注释字段,起始目录( / h o m e / s t e v e n s ),以及s h e l l程序( / b i n / k s h )。

2013-10-12 15:01:50 361

空空如也

空空如也

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

TA关注的人

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