ARM9(S3C2440) LCD

Activiti核心表ACT_RU_TASK全解析:字段、生命周期与SQL排查 业务流程管理(BPM)系统中,任务数据是流程流转的核心载体,直接影响审批效率和系统稳定性。Activiti作为主流开源工作流引擎,其运行期任务表ACT_RU_TASK承担着待办查询、签收转办、节点追踪等关键操作。理解该表的字段含义、数据生命周期及与ACT_HI_历史表的协作关系,是排查流程卡滞、超时统计等疑难问题的基础。本文从引擎表前缀设计切入,拆解ACT_RU_TASK的上下文ID、办理人三件套和时间状态字段,结合实际SQL示例,展示标准待办查询、候选组任务、节点滞留和超时统计的排查套路,并总结绕过引擎直 阅读详情

LCD是liquid crystal display 的简称,液晶显示器按驱动方式分为静态驱动,简单矩阵驱动以及主动矩阵驱动。

简单矩阵驱动分为扭转向列型(TN)和超扭转向列型(STN)两种。

主动矩阵驱动则以TFT为主。

 (1)、 TN型驱动液晶,是LCD中最基本的,其他LCD都以TN型改进。他只能将入射光旋转90度,视角只有30度,色彩单一,对比度低,用于电子表和电子计算机。

(2)、 STN型驱动液晶。可将入射光旋转180度至270度,也改善了视角,通过塔配色滤光片,将单色矩阵的任意像素分成3个子像素,红绿蓝。

(3)、1,2都采用场电压驱动方式,如果现实尺寸加大,中心部分对电极变化的反应时间就会变长,显示器的速度跟不上,为了解决这个问题,主动矩阵驱动TFT

          被提出,他通过晶体管显示信号开启或者关闭液晶分子电压,从而避免了显示器对电场效应的依靠。

 

                     LCD颜色显示

        显示器上的每个像素的颜色都有3部分组成:

         红绿蓝。他们被称为三原色。

         这三者的混合几乎可以产生出任何我们能识别的颜色。比如根据颜色的浓烈程度将三原色都分为256个级别(0~255),混合255级的红色,255级的绿色,255级的蓝色,可以产生出白色。

                                        LCD系统结构

 

 

 

                  S3C2440LCD控制器

 

 

                             LCD控制器

 

 

(1)、REGBANK有17个可编程寄存器组成,用来配置LCD控制器的各项参数。

(2)、LCDCDMA是专用DMA通道,自动从帧缓冲中传输视频数据到LCD控制器,利用DMA,视频数据可不经过CPU干扰就显示在屏幕上。

(3)、VIDPRCS接受从LCDCDMA来的视频数据并在将其改变到适合数据格式后经VD[23:0]将之送到LCD驱动器。

(4)、TIMEGEN产生LCD屏所需要的VFRAME,VLINE,VCLK,VM等控制信号。

 

                                          时序图

 

(1)、VSYNV:帧同步信号

                每发出一个脉冲,表示新的一屏图像数据开始传送。

(2)、HSYNC:行同步信号

               每发出一个脉冲,表示新的一行图像数据开始传输。

(3)、VCLK:像素时钟信号

             每发出一个脉冲,表示新的一个点图像数据开始传送。

(4)、LEND:行结束信号

 (5)、VBPD:表示在一帧图像开始时,帧同步信号以后的无效的行数,对应驱动中的upper_margin;

(6)、VFBD:表示在一帧图像结束后,帧同步信号以前的无效的行数,对应驱动中的lower_margin;

(7)、VSPW:表示垂直同步脉冲的宽度,用行数计算,对应驱动中的vsync_len;

(8)、HBPD:表示从水平同步信号开始到一行的有效数据开始之间的VCLK的个数,对应驱动中的left_margin

(9)、HFPD:表示一行的有效数据结束到下一个水平同步信号开始逐渐的VCLK的个数,对应驱动中的right_margin

(10)、HSPW:表示水平同步信号的宽度,用VCLK计算,对应驱动中的hsync_len

(11)、通过VM信号改变控制像素点的显示或者熄灭

 

                  驱动程序流程

 

 

                          初始化流程

 

 

                   端口初始化

 

  显示模式-LCDCON1

 

 

 

             帧缓冲初始化

 

 

 

代码:

 

#define GLOBAL_CLK  1
#include <stdlib.h>
#include <string.h>
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"

 

#define LCD_N35 //NEC 256K色240*320/3.5英寸TFT真彩液晶屏,每一条水平线上包含240个像素点,共有320条这样的线

#if defined(LCD_N35)

#define LCD_WIDTH 240
#define LCD_HEIGHT 320
#define LCD_PIXCLOCK 4

#define LCD_RIGHT_MARGIN 39
#define LCD_LEFT_MARGIN 16
#define LCD_HSYNC_LEN 5

#define LCD_UPPER_MARGIN 1
#define LCD_LOWER_MARGIN 5
#define LCD_VSYNC_LEN 1

#endif

void TFT_LCD_Test(void);

#define LCD_XSIZE  LCD_WIDTH
#define LCD_YSIZE  LCD_HEIGHT
#define SCR_XSIZE  LCD_WIDTH
#define SCR_YSIZE  LCD_HEIGHT

volatile static unsigned short LCD_BUFFER[SCR_YSIZE][SCR_XSIZE];  //定义320行,240列的数组,用于存放显示数据

              //320*240*2为帧缓冲大小,320×240等于点,每个点是2个字节

extern unsigned char sunflower_240x320[];

#define M5D(n) ((n)&0x1fffff)
#define LCD_ADDR ((U32)LCD_BUFFER)

#define ADC_FREQ 2500000

volatile U32 preScaler;

static void cal_cpu_bus_clk(void);
void Set_Clk(void);

/*演示函数*/
void delay(int times)
{
    int i,j;
    for(i=0;i<times;i++)
       for(j=0;j<400;j++);
}

/*在屏幕上画图*/
static void Pait_Bmp(int x0,int y0,int h,int l,const unsigned char *bmp)
{
    int x,y;
    U32 c;
    int p = 0;
 
    for( y = 0 ; y < l ; y++ )
    {
     for( x = 0 ; x < h ; x++ )
     {
         c = bmp[p+1] | (bmp[p]<<8) ;

     if ( ( (x0+x) < SCR_XSIZE) && ( (y0+y) < SCR_YSIZE) )
         LCD_BUFFER[y0+y][x0+x] = c ;

         p = p + 2 ;      //一个点为两个字节
     } 
    }
}


/*填充全屏为某一颜色*/
static void Lcd_ClearScr( U16 c)
{
    unsigned int x,y ;
  
    for( y = 0 ; y < SCR_YSIZE ; y++ )
    {
     for( x = 0 ; x < SCR_XSIZE ; x++ )
     {
  LCD_BUFFER[y][x] = c ;  //填入数组,就自动在屏幕上显示了

} 
    }
}


/*LCD开关*/
static void Lcd_EnvidOnOff(int onoff)
{
    if(onoff==1)
 rLCDCON1|=1;              // ENVID=ON
    else
 rLCDCON1 =rLCDCON1 & 0x3fffe;  // ENVID Off
}

 
/*端口初始化*/
static void Lcd_Port_Init( void )
{
    rGPCUP=0xffffffff; // Disable Pull-up register
    rGPCCON=0xaaaa02a8; //Initialize VD[7:0],VM,VFRAME,VLINE,VCLK

    rGPDUP=0xffffffff; // Disable Pull-up register
    rGPDCON=0xaaaaaaaa; //Initialize VD[15:8]
}

/*LCD初始化*/
static void LCD_Init(void)
{
 Lcd_Port_Init();

 /*显示模式初始化*/
 /*bit[17:8](4:CLKVAL);bit[6:5](11:TFT LCD panel);bit[4:1](1100:16 bpp for TFT)*/
 rLCDCON1 = (LCD_PIXCLOCK << 8) | (3 <<  5) | (12 << 1);
 
 /*bit[31:24](1:VBPD);bit[23:14](320-1:行数);bit[13:6](5:VFPD);bit[5:0](1:VSPW)*/
    rLCDCON2 = (LCD_UPPER_MARGIN << 24) | ((LCD_HEIGHT - 1) << 14) | (LCD_LOWER_MARGIN << 6) | (LCD_VSYNC_LEN << 0);
    
    /*bit[25:19](36:HBPD);bit[18:8](240-1:列数);bit[7:0](19:HFPD)*/
    rLCDCON3 = (LCD_RIGHT_MARGIN << 19) | ((LCD_WIDTH  - 1) <<  8) | (LCD_LEFT_MARGIN << 0);
    
    /*bit[15:8](13:MVAL,只有当LCDCON1 bit[7]MMODE=1才有效);bit[7:0](5:HSPW)*/
    rLCDCON4 = (13 <<  8) | (LCD_HSYNC_LEN << 0);
    
    /*bit[11](5:6:5 Format);bit[9](VLINE/HSYNC polarity inverted);bit[8](VFRAME/VSYNC inverted)
   bit[3](Enalbe PWERN signal),bit[1](half-word swap control bit)*/
 rLCDCON5   =  (1<<11) | (1 << 9) | (1 << 8) | (1 << 3) | (1 << 0);
 
 
 

        /*帧缓冲地址初始化*/
 /*
 LCDBANK: 视频帧缓冲区内存地址30-22位
 LCDBASEU: 视频帧缓冲区的开始地址21-1位
 LCDBASEL: 视频帧缓冲区的结束地址21-1位
 */
 /*bit[29:21]:LCDBANK,bit[20:0]:LCDBASEU*/
     rLCDSADDR1 = ((LCD_ADDR >> 22) << 21) | ((M5D(LCD_ADDR >> 1)) <<  0);   //M5D为一个宏定义
    
     /*bit[20:0]:LCDBASEL*/
     rLCDSADDR2 = M5D((LCD_ADDR + LCD_WIDTH * LCD_HEIGHT * 2) >> 1);
   
   
     /*PAGEWIDTH:虚拟屏幕一行的字节数,如果不使用虚拟屏幕,设置为实际屏幕的行字节数
   OFFSIZE:虚拟屏幕左侧偏移的字节数,如果不使用虚拟屏幕,设置为0
 */
 /*bit[21:11]:OFFSIZE; bit[10:0]:PAGEWIDTH*/
     rLCDSADDR3 = LCD_WIDTH;       

 /*屏蔽中断*/
     rLCDINTMSK |= 3;
   rTCONSEL   &= (~7);
 
 /*disable调色板*/
    rTPAL = 0x0;
    
    /*禁止LPC3600/LCC3600模式*/
    rTCONSEL &= ~((1<<4) | 1);
    
    /*打开LCD*/
    Lcd_EnvidOnOff(1); 
}


void TFT_LCD_Show(void)
{ 
    /*红(255:0:0);绿(0:255:0);蓝(0:0:255);黑(0:0:0);白(255,255,255)*/
 
    /*在屏幕上显示三基色*/
 
    Lcd_ClearScr( (0x00<<11) | (0x00<<5) | (0x00)  )  ;  //clear screen black
    delay(10000);
  
    Lcd_ClearScr((0x1f<<11) | (0x00<<5) | (0x00));   //red
    delay(10000);
  
    Lcd_ClearScr((0x00<<11) | (0x3f<<5) | (0x00));   //green
    delay(10000);
   
    Lcd_ClearScr((0x00<<11) | (0x00<<5) | (0x1f));   //blue
    delay(10000);

    Lcd_ClearScr( (0x1f<<11) | (0x3f<<5) | (0x1f)  )  ;  //clear screen white
    delay(10000);
 
    /*显示一副图片在屏幕上*/
    Pait_Bmp(0, 0, 240, 320, sunflower_240x320);
}
  

/*************************************************
Function name: Set_Clk()
Parameter    : void
Description  : 设置CPU的时钟频率
Return   : void
Argument     : void
Autor & date : Daniel
**************************************************/
void Set_Clk(void)
{
 int i;
 U8 key;
 U32 mpll_val = 0 ;
 i = 2 ;              //don't use 100M!
                   //boot_params.cpu_clk.val = 3;
 switch ( i ) {
 case 0: //200
  key = 12;
  mpll_val = (92<<12)|(4<<4)|(1);
  break;
 case 1: //300
  key = 13;
  mpll_val = (67<<12)|(1<<4)|(1);
  break;
 case 2: //400
  key = 14;
  mpll_val = (92<<12)|(1<<4)|(1);
  break;
 case 3: //440!!!
  key = 14;
  mpll_val = (102<<12)|(1<<4)|(1);
  break;
 default:
  key = 14;
  mpll_val = (92<<12)|(1<<4)|(1);
  break;
 }
 
 //init FCLK=400M, so change MPLL first
 ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);   //set the register--rMPLLCON
 ChangeClockDivider(key, 12);    //the result of rCLKDIVN [0:1:0:1] 3-0 bit
 cal_cpu_bus_clk();    //HCLK=100M   PCLK=50M
}
/*************************************************
Function name: cal_cpu_bus_clk
Parameter    : void
Description  : 设置PCLK\HCLK\FCLK的频率
Return   : void
Argument     : void
Autor & date : Daniel
**************************************************/
static void cal_cpu_bus_clk(void)
{
 static U32 cpu_freq;
    static U32 UPLL;
 
 U32 val;
 U8 m, p, s;
 
 val = rMPLLCON;
 m = (val>>12)&0xff;
 p = (val>>4)&0x3f;
 s = val&3;

 //(m+8)*FIN*2 不要超出32位数!
 FCLK = ((m+8)*(FIN/100)*2)/((p+2)*(1<<s))*100;     //FCLK=400M  FIN=12000000
 
 val = rCLKDIVN;
 m = (val>>1)&3;
 p = val&1; 
 val = rCAMDIVN;
 s = val>>8;
 
 switch (m) {
 case 0:
  HCLK = FCLK;
  break;
 case 1:
  HCLK = FCLK>>1;
  break;
 case 2:
  if(s&2)
   HCLK = FCLK>>3;
  else
   HCLK = FCLK>>2;
  break;
 case 3:
  if(s&1)
   HCLK = FCLK/6;
  else
   HCLK = FCLK/3;
  break;
 }
 
 if(p)
  PCLK = HCLK>>1;
 else
  PCLK = HCLK;
 
 if(s&0x10)
  cpu_freq = HCLK;
 else
  cpu_freq = FCLK;
  
 val = rUPLLCON;
 m = (val>>12)&0xff;
 p = (val>>4)&0x3f;
 s = val&3;
 UPLL = ((m+8)*FIN)/((p+2)*(1<<s));
 UCLK = (rCLKDIVN&8)?(UPLL>>1):UPLL;
 Uart_Printf("\nFCLK:%dMHz,HCLK:%dMHz,PCLK=%dMHZ\n",FCLK/1000/1000,HCLK/1000/1000,PCLK/1000/1000);
}

/*主函数*/
int Main(void)
{ 
    Set_Clk();
   
    LCD_Init();
   
    TFT_LCD_Show();
   
    return 0;
}

 

 

S3C2440 LCD驱动架构与优化实践详解 LCD驱动作为嵌入式系统中的关键组件,其核心原理是通过硬件控制器管理显存与时序。在ARM架构中,S3C2440处理器采用DMA通道直接操作显存,显著提升图形处理效率。驱动开发涉及platform_driver架构、设备树配置以及双缓冲等关键技术,其中时序参数计算和显存管理直接影响显示性能。通过VSYNC中断和DMA传输优化,可实现流畅的图形渲染。这些技术在工业控制、医疗设备和智能终端等领域有广泛应用,而S3C2440的LCD驱动实现为开发者提供了经典参考案例。 阅读详情

相关推荐

S3C2440裸机驱动实战代码包:从点灯到LCD/OLED显示、串口通信、Flash读写与传感器采集全功能实现

专为ARM9架构S3C2440处理器设计的裸机开发代码集合,不依赖操作系统,直接操控硬件寄存器完成各类外设功能。包含GPIO基础控制(输入检测、LED驱动)、UART串口收发(支持printf重定向)、SysTick与定时器中断配置、NAND Flash和SPI Flash底层读写驱动、I2C总线通信(适配AT24CXX EEPROM)、SPI控制器驱动(含Flash操作示例)、LCD液晶屏初始化与字符/图形显示、OLED屏幕驱动(SSD1306兼容)、DS18B20单总线温度数据读取、红外NEC协议解码、

i8j9k0l1的博客 232

硬件基础(1)基于ARM9 s3c2440基础

UART(Universal Asynchronous Receiver-Transmitter,通用异步收发传输器)是一种常用的串行通信协议,广泛应用于微控制器、计算机、嵌入式系统等设备之间的数据传输。中断是计算机系统中一种重要的事件处理机制,能够让处理器在执行程序的过程中暂停当前任务,响应某个特定事件(通常是硬件或软件产生的信号),并处理该事件。GPIO的工作模式和功能通过特定的寄存器进行配置,通常包括方向寄存器(设置输入/输出)、数据寄存器(进行读写操作)和控制寄存器等。

weixin_68239724的博客 909

扫地机器人:从仿真到决策,一个完整SLAM导航系统的自研之路

本文详细记录了从零开始自研扫地机器人SLAM导航系统的全过程,涵盖ROS-Gazebo仿真系统搭建、地图预处理优化、全覆盖规划算法迭代等关键技术。通过三次算法升级,最终实现92%的清洁效率,并分享DWA调参、状态机设计等实战经验,为开发者提供从仿真到落地的完整解决方案。

weixin_29053695的博客 352

S3C2440的时钟设定

 准备先不跑系统,把S3C2440和周边硬件熟悉一下再说。对于任何一个单片机,要使用它首先就要弄明白他的时钟系统,MCU的时钟就像人的心脏,跳动的快慢,决定着系统的工作速度。S3C2440的datesheet上说,可以达到400M,但是也不是说,必须在400M的频率下工作,主时钟晶振来自于外部晶振(XTIPLL)或者是外部时钟(EXTCLK)。时钟生成器包含了一个振荡器(振荡放大器),其连

大海的故乡 884

计数译码驱动显示电路实验报告_京东方G0A电路、阵列基板、显示 装置及驱动方法广州威彩...

图1、实施例二所述的选择子单元的结构示意图图2、实施例四所述的GOA电路结构示意图图3、实施例七所述的阵列基板的局部结构示意图图4、实施例所述的极性反转驱动方法的第一场的各信号时序图图5、实施例所述的极性反转驱动方法的第二场的各信号时序图图6、实施例所述的极性反转驱动方法的第三场的各信号时序图图7、实施例所述的极性反转驱动方法的第四场的各信号时序图图8、为图4所示时序下,实施例八所述显示...

weixin_35696112的博客 924

dmx512协议c语言编程,DMX512协议+c程序代码.pdf

DMX512 协议1.协议简介DMX 是Digital MultipleX 的缩写 ,意为多路数字传输。DMX512 控制协议是美国舞台灯光协会(USITT)于1990 年发布的灯光控制器与灯具设备进行数据传输的工业标准 ,全称是 USITT DMX512(1990) ,包括电气特性、数据协议、数据格式等方面的内容。2. 电气特性和物理层2.1. 电气特...

weixin_39928993的博客 2543

初识s3c2440A之ARM体系架构入门linux硬件

如果大家在前期学习了c语言,并且具备了一定的c语言功底,且学习了shell,文件IO,进程线程,网络编程、数据库以及数据结构等基本的嵌入式软件的基础知识,以及做过一定项目的前提下,可以进入到本章内容的学习,那么接下来我将主要分享的是嵌入硬件部分的学习;各位同学可以跟着每期的分享一步步来,那么最终达到我们想要的高度并不是一件非常难的事情;

weixin_58016534的博客 2107

CHARLS数据库下载避坑指南:从注册到数据获取的完整流程(2023最新版)

本文提供2023年最新版CHARLS数据库下载与使用全流程指南,涵盖从注册、数据申请到清洗的高效实践。重点解析邮箱选择、协议签署等关键步骤,并分享多线程下载、格式转换等实用技巧,助力研究者快速获取并处理这一中国中老年健康研究的黄金标准数据。

red88的博客 920

s3c2440 ARM9 Linux-3.0最小系统移植

s3c2440 ARM9 Linux-3.0最小系统移植 注:本文基于Ubuntu14.04下crosstool-ng 交叉编译器制作 文章架构: 一、创建Linux内核目录框架 二、Linux源码修改 三、内核配置及编译 四、Linux内核启动 一、创建Linux内核目录框架 FL2440开发板由三星ARM9 S3C2440 做CPU,该CPU使用arm4t指令集的ARM920T核,工作主频最高...

qq_29973657的博客 1432

【YOLOv13多模态融合改进】| CFT:跨模态融合Transformer | 利用Transformer的自注意力机制,解决跨模态融合中的长距离依赖和全局信息整合问题

本文记录的是利用 CFT 模块改进 YOLOv13 的多模态目标检测网络模型。的设计出发点在于解决传统多模态检测中跨模态特征融合不充分的问题,即当不同模态数据需协同检测时,基于CNN的方法因局部卷积的局限性,难以捕捉长距离依赖和全局模态间的互补信息,导致复杂光照、遮挡等场景下检测精度不足。本文利用模块,将多模态特征序列拼接后自动学习模态内与模态间的交互权重,在特征提取阶段整合全局上下文信息,增强对不同模态互补特征的利用能力,从而提升模型在多模态场景下的检测鲁棒性与准确性。Cross-Modality Fus

Limiiiing的博客 539

SAP使用XCO框架创建RAP所有对象

通过XCO框架自动生成SAP ABAP开发对象。

DeveloperMrMeng的博客 548

ARM9的LCD

实验前须知: 关于LCD的知识,你可以参考《嵌入式Linux应用开发完全手册》的第13章,只要你静下心来看,里边的知识点完全可以看懂。 待你看懂后,LCD的知识你就了解差不多了。接下来就从代码中去解读LCD的实际操作了。 操作LCD的大体流程如下: 1>配置GPIO为相应的功能管脚 2>配置寄存器,其中LCDCON1-LCDCON5和LCDSADDR1-LCDSADDR3可能相对难配

drinkingcode 998

基于STM32+华为云设计的智慧农业灌溉系统(2023升级版)(158)

本项目设计一种基于STM32的智慧农业监测系统。该系统能够检测空气温度、湿度、光强度和土壤湿度等关键指标,并自动调节浇水量,实现作物生长环境的精细化管理。同时,本项目还支持本地LCD屏幕数据显示和通过ESP8266上传数据到华为云物联网平台,同时搭建流媒体服务器实现摄像头远程监控。最重要的是,本项目将利用Qt开发Android手机APP,使用户可以远程查看监测情况,了解农作物生成情况。

1万+

S3C2440 LCD驱动开发与ARM9显示控制详解

LCD驱动在嵌入式Linux系统中扮演着核心角色,负责处理器与显示设备间的数据转换与传输。其工作原理基于帧缓冲机制,通过DMA控制器实现内存到屏幕的高效数据传输。在ARM架构中,如三星S3C2440这类经典处理器,内置的LCD控制器支持多种色彩模式和分辨率,为工业HMI等应用提供稳定显示方案。开发过程中需要深入理解时序生成、色彩转换等硬件模块,并通过配置寄存器实现精准控制。本文以S3C2440为例,详细解析其LCD驱动架构、设备树配置及调试技巧,涵盖从基础原理到工程实践的全流程,特别适合从事嵌入式显示开发的

weixin_29169505的博客 342

Transformers 实战修炼与源码剖析专栏大纲

本专栏以 Hugging Face Transformers 为主线,围绕“能用、会调、敢上线、懂源码”四个目标展开。内容不把理论堆成公式墙,而是用真实或拟真的业务场景驱动:客服分类、合同抽取、知识库问答、模型微调、推理服务、监控告警、源码扩展等。采用“业务痛点 → 三人剧本对话 → 代码实战 → 总结思考”的四段式结构,让读者在动手完成一个个小项目的过程中,逐步理解 Tokenizer、Model、Pipeline、Trainer、Generation、PEFT、Accelerate、Serving等概念

davidwang456的专栏 922

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ARM9(S3C2440)的LCD显示——程序实例讲解

结合上一篇文章中的LCD理论知识,下面是结合FL2440开发板的实例程序,所用的LCD是16位320*240 操作的大概步骤是先初始化LCD,然后是写我们所需要的函数,最基础的是像素点显示函数,然后是划线函数,字符显示函数,图片显示函数等等,然后就是写主函数完成我们的任务。 #include "def.h" #include "option.h" #include "2440addr.h"

OUYANG_LINUX007的专栏 3775

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

基于S3C2440的ARM9基础程序设计及分析

基于S3C2440的ARM9基础程序设计及分析 -------JustDo 最近学习了ARM9基础程序的设计,记录下所学心得,希望对初学者提供一些帮助。学习ARM程序要注意方法,先去芯片手册的相应模块部分的结构原理框图,搞清楚所使用的模块的基本原理,然后根据框图搞清楚需要设置哪些对应的寄存器,再根据时序图搞明白相应寄存器应该怎样设置,再接着理清楚你所写程序的大概流程,最后就可以动手写程序了。

屌丝终有逆袭日。 2262

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

linux s3c2440 LCD 设备驱动

主机:VM - redhat 9.0 开发板:FL2440,linux-2.6.12 arm-linux-gcc:3.4.1 /* * linux/drivers/video/s3c2410fb.c */ #include #include #inclu

blrk 2024

linux 2.6.32 在arm9(s3c2440)平台的移植 - LCD背光驱动

LCD背光是通过 CPU的 LCD_PWR引脚来控制的, 当LCD_PWR输出1, 亮 , 输出0则灭.以下的代码均参考mini2440的移植手册 (1)新建/drivers/video/mini2440_backlight.c    #include #include #include #include #include #include #include #include #include #include #include #include #inc

DOS5GW的专栏 1680

KEIL下S3C2440裸机开发

玩ARM7一般有keil工程模板,裸机程序开发很方便;ARM9貌似只有ADS环境下的模板,keil下的模板如有望告知。 ARM9主要是移植Linux,在系统上开发,感觉起步较难,先偷懒从裸机入手,虽然两者差别巨大。 S3C2440在keil下裸机开发环境搭建: http://www.cnblogs.com/CodeWorkerLiMing/archive/2012/06/14/254

tiandawangliang的专栏 1360

Basic2410/Basic2440 ARM9开发板(带VGA输出)

Basic2410/Basic2440 ARM9开发板(带VGA输出) 具体介绍:http://www.yheda.com/Shop/arm/ARM9/200905/137.html全程多媒体讲解,告别看电子文档学习的时代,提高学习效率,快速入门。对比讲解2个cpu,拥有一块Basic24X0系列板,同时学习掌握S3C2410和S3C2440两个arm9处理器。紧跟先进...

weixin_33701617的博客 188

(4)高大上的LCD

/* AUTHOR: Pinus * Creat on : 2018-11-1 * KERNEL : linux-4.4.145 * BOARD : JZ2440(arm9 s3c2440) * REFS : 韦东山视频教程第二期 S3C2440上LCD驱动(FrameBuffer)实例开发讲解 */ 概述         不要说我这取得名字low,我感觉吧,一个东西它能显示出来图...

Under the Pine 364
上一篇: ARM9(S3C2440) Touch Screen
下一篇: 北京有感
sjmp
博客等级 码龄15年 56粉丝 104原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值