Samsung--S3C2440
文章平均质量分 60
jz2440裸机
陈 洪 伟
这个作者很懒,什么都没留下…
展开
-
S3C2440移植Linux4.19.275内核以及过程中遇到的问题
S3C2440移植Linux内核以及过程中遇到的问题原创 2023-03-09 19:41:29 · 1920 阅读 · 1 评论 -
使用busybox构建根文件系统以及过程中遇到的问题
使用busybox构建根文件系统原创 2023-03-17 08:51:43 · 3571 阅读 · 0 评论 -
S3C2440开发环境搭建以及过程中遇到的问题
S3C2440开发环境搭建原创 2023-02-27 17:36:42 · 821 阅读 · 0 评论 -
ARM裸板调试之JTAG调试源码级调试
ARM裸板调试之JTAG调试源码级调试原创 2022-07-23 09:23:01 · 683 阅读 · 0 评论 -
ARM裸板调试之JTAG调试命令行调试
裸板调试之JTAG调试命令行调试原创 2022-07-18 10:39:53 · 1187 阅读 · 0 评论 -
S3C2440裸机复习------GPIO
第一遍看完S3C2440裸机后,有些遗忘了,再挑选几个复习一下,首先是GPIO。1 原理图首先需要看一下原理图,可以看到我们把GPF4设置为低电平就可以让LED1点亮。2 芯片手册从芯片手册可以看到,我们要把GPFCON寄存器的[9:8]设置为01,然后GPFDAT的[4]设置为0.3 写代码3.1 start.S.test.global _start mov 0x56000050 #0x100 mov ox56000054 #0x10.h.原创 2021-12-26 10:40:25 · 3007 阅读 · 0 评论 -
S3C2440裸机------SPI_FLASH编程
目录1.spi_flash.h2.spi_flash.c1.spi_flash.h#ifndef _SPI_FLASH_H#define _SPI_FLASH_Hvoid SPIFlashReadID(int *pMID, int *pDID);void SPIFlashInit(void);void SPIFlashEraseSector(unsigned int addr);void SPIFlashProgram(unsigned int addr, unsigned原创 2021-10-12 11:17:18 · 206 阅读 · 0 评论 -
S3C2440裸机------SPI_程序框架使用GPIO实现SPI协议操作OLED
目录1.oledfont.h2.gpio_spi.h3.gpio_spi.c4.oled.h5.oled.c1.oledfont.h#ifndef __OLEDFONT_H#define __OLEDFONT_H const unsigned char oled_asc2_8x16[95][16]={ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x原创 2021-10-10 17:47:41 · 217 阅读 · 0 评论 -
SPI总线协议
目录1.SPI概述2.SPI总线机制3.SPI的四种工作模式4.SPI数据交换SPI通信协议(SPI总线)学习SPI总线协议概述1.SPI概述 SPI(serial peripheral interface)是一种同步串行通信协议,由一个主设备和一个或多个从设备组成,主设备启动与从设备的同步通信,从而完成数据的交换。SPI是一种高速全双工同步通信总线,标准的SPI仅仅使用4个引脚,主要应用在 EEPROM, Flash, 实时时钟(RTC), 数模转换器(ADC), 数字..原创 2021-10-07 17:25:02 · 2601 阅读 · 0 评论 -
S3C2440裸机------I2C_程序框架
原创 2021-10-05 14:39:26 · 144 阅读 · 0 评论 -
S3C2440裸机------I2C_S3C2440的I2C控制器控制时序
目录1.寄存器2.数据传输流程1.寄存器S3C2440的I2C主要由以下四个寄存器来控制。2.数据传输流程原创 2021-10-05 10:35:13 · 163 阅读 · 0 评论 -
S3C2440裸机------I2C_I2C协议与EEPROM
虽然工作中用了很多次的I2C协议了,对I2C协议也比较清楚了,但还是简单的把笔记写一下,原创 2021-10-05 08:28:16 · 165 阅读 · 0 评论 -
S3C2440裸机------触摸屏_校准与画线编程
1.校准程序框架原创 2021-09-28 11:09:29 · 262 阅读 · 0 评论 -
S3C2440裸机------触摸屏_校准原理
所谓校准就是找到一个公式把电压值转换为坐标值,我们的触摸屏覆盖在LCD上面,当我们得到出点的电压值之后可以通过比例公式得到LCD的坐标。但是实际我们不会选择边界点,因为边界点不方便点,所以我们都是从中间选择某个点进行计算。由于液晶屏的水平方向和垂直方向存在一些偏差,因此我们都是水平方向选择2个点,垂直方向选择两个点。...原创 2021-09-28 11:01:37 · 243 阅读 · 0 评论 -
S3C2440裸机------触摸屏_使用定时器支持长按
我们前面写的代码中,长按或者滑动时不能读取坐标,接下来我们使用定时器对代码进行改进,可以在长按或者滑动时把坐标值读出来。#include "../s3c2440_soc.h"#define ADC_INT_BIT (10)#define TC_INT_BIT (9)#define INT_ADC_TC (31)/* ADCTSC's bits */#define WAIT_PEN_DOWN (0<<8)#define WAIT_PEN_UP ...原创 2021-09-21 09:42:20 · 178 阅读 · 0 评论 -
S3C2440裸机------触摸屏_定时候程序优化
我们前面的触摸屏代码中,当我们短按一次会有一个数据输出,但是当我们长按或者滑动时并没有数据输出,我们用定时器使触摸屏支持长按,在按下时我们启动定时器,定时器间隔一段时间中断一次,然后在中断函数里面再去测量触点的XY坐标。 我们前面的定时器代码是直接在定时器中断函数里面点灯,我们应该用一个数组去做处理,当定时器中断发生时分别进入不同的函数做不同的处理。目录1. timer.c2. led.c1. timer.c#include "s3c2440_soc...原创 2021-09-21 08:35:04 · 151 阅读 · 0 评论 -
S3C2440裸机------触摸屏_利用ADC读取触摸屏坐标
前面我们在按下触摸屏时只是打印调试信息,现在我们再按下的中断处理函数里面增加ADC的配置代码,当我们按下后利用ADC读取触摸屏的坐标。#include "../s3c2440_soc.h"#define ADC_INT_BIT (10)#define TC_INT_BIT (9)#define INT_ADC_TC (31)/* ADCTSC's bits */#define WAIT_PEN_DOWN (0<<8)#define WAIT_PEN_UP原创 2021-09-21 07:12:48 · 203 阅读 · 0 评论 -
S3C2440裸机------触摸屏_按下松开检测
目录1.整体流程图2.touchscreen.c1.整体流程图上图中的AdcTsIntHandle是总的中断,里面会进行判断,如果是ADC中断,则调用ADC中断函数,如果是触摸屏中断,那么就调用触摸屏中断函数。2.touchscreen.c#include "../s3c2440_soc.h"#define ADC_INT_BIT (10)#define TC_INT_BIT (9)#define INT_ADC_TC (31)/* ADCTSC's bi原创 2021-09-20 16:13:24 · 159 阅读 · 0 评论 -
S3C2440裸机------触摸屏_S3C2440触摸屏接口
1.触摸屏接口 分离的X Y转换模式是指逐个的转换X Y的坐标,它首先会启动X坐标的AD转换,转换成功之后数据会保存在ADCDAT0里面,同时会产生一个中断,在中断服务程序里面就可以把X坐标读出来了,然后可以启动Y坐标的转换, 转换成功之后,数据会保存在ADCDAT1里面,同时会产生一个中断,然后从寄存器里面把Y坐标读出来。 自动的X/Y坐标转换模式,你不需要单独的去读取X坐标或者Y坐标,可以通过设置寄存器,让他一次性的测试X和Y坐标。 等待中断模式(等待按下或者松开)...原创 2021-09-20 10:55:43 · 293 阅读 · 0 评论 -
S3C2440裸机------触摸屏_电阻触摸屏硬件原理
目录1.电阻触摸屏原理2.电阻触摸屏等效电路2.1触摸屏空闲状态2.2采样X_ADC电压2.3采样Y_ADC电压1.电阻触摸屏原理2.电阻触摸屏等效电路2.1触摸屏空闲状态 平时触摸屏没有被按下时,等效电路如图14.5所示。S4、S5闭合,S1、S2、S3断开,即YM接地、XP上拉、XP作为模拟输入(对CPU而言)、YP作为模拟输入、XM高阻。 平时触摸屏没有被按下时,由于上拉电阻的关系,Y_ADC为高电平,当x轴和y轴收挤压而接触导...原创 2021-09-18 10:04:00 · 244 阅读 · 0 评论 -
S3C2440裸机------ADC_ADC硬件原理
原创 2021-09-14 09:38:09 · 153 阅读 · 0 评论 -
S3C2440裸机------LCD_使用调色板
1.调色板地址调色板就是一块内存的地址,我们在s3c2440的芯片手册中搜索palette,可以找到调色板的地址。2.s3c2440_lcd_controller.c我们在s3c2440_lcd_controller.c里面设置调色板。原创 2021-09-13 19:18:09 · 173 阅读 · 0 评论 -
S3C2440裸机------LCD_添加除法
我们前面s3c2440_lcd_controller.c里面的 int clkval = (float)HCLK/plcdparams->time_seq.vclk/2-1+0.5; //int clkval = 5;编译时报错,这是因为我们没有实现除法,对这种函数没有实现的一般用如下方法解决:去uboot中找; 去内核源码中查找; 去库函数中查找(一般来说编译器自带有很多库)我们去uboot和内核源码里面搜索floatsisf都没有搜到,所以我们去编译器自带的库中找..原创 2021-09-13 18:47:18 · 207 阅读 · 0 评论 -
S3C2440裸机------LCD_显示文字
1.显示文字的原理我们在内核源码中搜索font,找到font_8x16.c,然后我们从里面找到字符A的点阵,一共由16个字节组成,其中字节的每一位表示该位是0还是1。2.font.cextern const unsigned char fontdata_8x16[];/* 获得LCD参数 */static unsigned int fb_base;static int xres, yres, bpp;void font_init(void){ get_lcd_para..原创 2021-09-13 17:36:25 · 245 阅读 · 0 评论 -
S3C2440裸机------LCD_画点线圆
目录1.画点2.画线、圆1.画点我们首先实现画点的函数,#include "lcd.h"/* 实现画点 *//* 获得LCD参数 */static unsigned int fb_base;static int xres, yres, bpp;void fb_get_lcd_params(void){ get_lcd_params(&fb_base, &xres, &yres, &bpp);}/* rgb: 0x00RRGGB原创 2021-09-13 14:51:08 · 403 阅读 · 0 评论 -
S3C2440裸机------LCD_LCD设置
1.lcd_4.3.c首先我们根据芯片手册对LCD所需要的参数赋初值。#define LCD_FB_BASE 0x33c00000lcd_params lcd_4_3_params = { .name = "lcd_4.3" .pins_polarity = { .de = NORMAL, /* normal: 高电平时可以传输数据 */ .pwren = NORMAL, /* normal: 高电平有效 */ .vclk = NORMAL, /* normal原创 2021-09-12 12:45:51 · 195 阅读 · 0 评论 -
S3C2440裸机------LCD_LCD控制器编程
目录1.s3c2440_lcd_controller.c我们通过配置LCD控制器的相关寄存器实现这三个函数struct lcd_controller s3c2440_lcd_controller = { .init = s3c2440_lcd_controller_init, .enalbe = s3c2440_lcd_controller_enalbe, .disable = s3c2440_lcd_controller_disable,};具体代码及相关寄存器注释如下:原创 2021-09-12 12:18:48 · 253 阅读 · 0 评论 -
S3C2440裸机------LCD_抽象出重要结构体
我们在lcd.h里面定义一个结构体,用来表示LCD需要的参数。#ifndef _LCD_H#define _LCD_Henum { NORMAL = 0, INVERT = 1,};/* NORMAL : 正常极性 * INVERT : 反转极性 */typedef struct pins_polarity { int vclk; /* normal: 在下降沿获取数据 */ int rgb; /* normal: 高电平表示1 */ int hsync; /*原创 2021-09-09 21:56:52 · 158 阅读 · 0 评论 -
S3C2440裸机------LCD_框架与准备
目录1.框架2.准备工作1.框架2.准备工作我们需要准备一个支持norfalsh和nandflash启动的程序,当我们的程序小于4K时,我们可以把nandflash的程序拷贝到片内4K内存,但是现在我们的程序大于4K,这时候我们要把程序拷贝到SDRAM里面。...原创 2021-09-09 21:11:21 · 128 阅读 · 0 评论 -
S3C2440裸机------LCD_LCD控制器介绍
1.LCD控制器的功能LCD控制器主要完成两个工作:取数据:把framebuffer的地址告诉LCD控制器,bpp,分辨率。发数据: 把时序告诉LCD控制器、设置引脚的极性。2.LCD控制器框图我们的LCD控制器中的LCDDMA会从内存中把数据取出来,然后发送给LCD,我们通过设置寄存器来控制LCD控制器发出合适的时序。3.LCD像素数据格式如果像素数据使用8bpp,那么会用到一个调色板的概念,4.LCD控制器时序图...原创 2021-09-06 21:46:39 · 189 阅读 · 0 评论 -
S3C2440裸机------LCD_LCD硬件原理
目录1.LCD的连接图2.LCD时序图1.LCD的连接图2.LCD时序图参考文章:http://www.cnblogs.com/shangdawei/p/4760933.html原创 2021-08-22 21:56:27 · 191 阅读 · 0 评论 -
ARM架构与X86架构的区别
1.什么是CPU 中央处理单元(CPU)主要由运算器、控制器、寄存器三部分组成,从字面意思看运算器就是起着运算的作用,控制器就是负责发出CPU每条指令所需要的信息,寄存器就是保存运算或者指令的一些临时文件,这样可以保证更高的速度。 CPU有着处理指令、执行操作、控制时间、处理数据四大作用,打个比喻来说,CPU就像我们的大脑,帮我们完成各种各样的生理活动。因此如果没有CPU,那么电脑就是一堆废物,无法工作。移动设备其实很复杂,这些CPU需要执行数以百万计的指示,才能使它向我...转载 2021-08-11 10:52:58 · 32497 阅读 · 0 评论 -
S3C2440裸机------NandFlash编程_擦除与烧写
1.擦除NandFlash是以块为单位进行擦除的,一个块是128K,从上面的时序图我们可以看到,首先我们要发出60命令,然后发出三个行地址,然后发送D0H,然后等待擦除结束。int nand_erase(unsigned int addr, unsigned int len){ int page = addr / 2048; if (addr & (0x1FFFF)) { printf("nand_erase err, addr is not block align\n.原创 2021-08-03 21:37:48 · 553 阅读 · 0 评论 -
S3C2440裸机------NandFlash编程_数据读取
1.一个page是由2028的page data和64字节的OOB组成的,原创 2021-08-01 21:13:25 · 384 阅读 · 0 评论 -
S3C2440裸机------NandFlash编程_芯片id读取
1.芯片id读取时序图我们先看一下NandFlash芯片手册中读取id的时序图,后面我们要根据这个时序图去写代码。2.使能芯片从前面的时序图我们可以看出,我们首先要发出片选信号,我们通过设置下图寄存器的Reg_nCE位来进行设置,void nand_select(void){ /*使能片选*/ NFCONT &=~(1<<1);}void nand_deselect(void){ /*禁止片选*/ NFCONT |= (1<<1).原创 2021-08-01 11:31:31 · 465 阅读 · 0 评论 -
S3C2440裸机------NandFlash编程_时序及初始化
1.NandFlash初始化Nandflash初始化主要包括时序图的设置和Nandflash控制器的使能,我们首先看一下它的时序图。原创 2021-08-01 09:01:04 · 154 阅读 · 0 评论 -
S3C2440裸机------NandFlash操作原理
1.Nandflash操作原理下图是原理图中NandFlash和S3C2440的连接图,问1. 原理图上NAND FLASH和S3C2440之间只有数据线, 怎么传输地址?答1.在DATA0~DATA7上既传输数据,又传输地址 当ALE为高电平时传输的是地址,问2. 从NAND FLASH芯片手册可知,要操作NAND FLASH需要先发出命令 怎么传入命令?答2.在DATA0~DATA7上既传输数据,又传输地址,也传输命令 当ALE为高电平时传输的...原创 2021-08-01 06:14:06 · 391 阅读 · 0 评论 -
S3C2440裸机------Nor Flash编程_擦写读
1原创 2021-07-31 20:57:48 · 354 阅读 · 0 评论 -
S3C2440裸机------Nor Flash编程_识别
1.编写菜单程序首先我们编写一个测试菜单程序,用来获取norFlash信息以及对NorFlash进行读写操作,代码如下:void nor_flash_test(void){ char c; while (1) { /* 打印菜单, 供我们选择测试内容 */ printf("[s] Scan nor flash\n\r"); printf("[e] Erase nor flash\n\r"); printf("[w] Write nor flash\n\r"); pri原创 2021-07-31 20:01:10 · 424 阅读 · 0 评论 -
S3C2440裸机------Nor Flash原理及硬件操作
1原创 2021-07-28 19:56:59 · 299 阅读 · 0 评论