S3C2440看门狗
星S3C2440微处理器
应用实例一:嵌入式系统开发
嵌入式系统开发
星S3C2440微处理器适用于嵌入 式系统开发,其强大的处理能力 和丰富的外设接口使其成为嵌入 式领域的理想选择。
实时操作系统
星S3C2440微处理器支持实时操 作系统(RTOS)的开发,RTOS 能够提供实时任务调度和多任务 处理能力,满足实时系统的需求。
3
APB和ASB总线
APB和ASB总线用于连接低速外设,如GPIO、 UART等。
03
星S3C244ห้องสมุดไป่ตู้微处理器的指令集 架构
指令集架构概述
ARM架构
01
S3C2440微处理器采用ARM架构,属于精简指令集(RISC)的
范畴。
指令集发展历程
02
ARM架构的指令集经过多年的发展,已成为移动设备和嵌入式
指令集功能
数据处理指令
用于执行算术、逻辑、移位等基本操 作。
控制流程指令
用于控制程序的执行流程,如条件判 断、跳转等。
内存访问指令
用于读写内存和访问外部存储器。
协处理器指令
用于执行特定功能,如浮点运算、加 密等。
指令集实现方式
汇编语言
使用汇编语言编写程序,通过汇编器将汇编代码转换 为机器码。
C/C语言
星S3C2440微处理器
• 星S3C2440微处理器概述 • 星S3C2440微处理器的体系结构 • 星S3C2440微处理器的指令集架构
• 星S3C2440微处理器的编程模型 • 星S3C2440微处理器的应用实例
01
星S3C2440微处理器概述
定义与特点
定义
S3C2440是一款由三星公司开发的 ARM920T核的微处理器。
硬件考试题库(附参考答案)
硬件考试题库(附参考答案)1、请列举您知道的电阻、电容、电感品牌(最好包括国内、国外品牌)。
电阻:美国:A VX、VISHAY威世日本:KOA兴亚、Kyocera京瓷、muRata村田、Panasonic松下、ROHM罗姆、susumu、TDK台湾: LIZ丽智、PHYCOM飞元、RALEC旺诠、ROYALOHM厚生、SUPEROHM美隆、TA-I大毅、TMTEC泰铭、TOKEN 德键、TYOHM幸亚、UniOhm厚声、VITROHM、VIKING光颉、WALSIN华新科、YAGEO国巨新加坡:ASJ中国:FH风华、捷比信电容:美国:A VX、KEMET基美、VISHAY威世英国:NOVER诺华德国:EPCOS、WIMA威马丹麦:JENSEN战神日本:ELNA伊娜、FUJITSU富士通、HITACHI日立、KOA兴亚、Kyocera京瓷、Matsushita松下、muRata村田、NEC、nichicon (蓝宝石)尼吉康、Nippon Chemi-Con(黑金刚、嘉美工)日本化工、Panasonic松下、Raycon威康、Rubycon(红宝石)、SANYO三洋、TAIYO YUDEN太诱、TDK、TK东信韩国: SAMSUNG三星、SAMWHA三和、SAMYOUNG三莹台湾:CAPSUN、CAPXON(丰宾)凯普松、Chocon、Choyo、ELITE金山、EVERCON、EYANG宇阳、GEMCON至美、GSC杰商、G-Luxon世昕、HEC禾伸堂、HERMEI合美电机、JACKCON融欣、JPCON正邦、LELON立隆、LTEC辉城、OST 奥斯特、SACON士康、SUSCON 冠佐、TAICON台康、TEAPO智宝、WALSIN华新科、YAGEO国巨香港:FUJICON富之光、SAMXON万裕中国:AiSHi艾华科技、Chang常州华威电子、FCON深圳金富康、HEC东阳光、JICON吉光电子、LM佛山利明、R.M佛山三水日明电子、FH广东风华、Rukycon海丰三力、jianghai南通江海、TF南通同飞、QIFA深圳奇发电子、Sancon海门三鑫、SEACON深圳鑫龙茂电子、SHENGDA扬州升达电感:美国:AEM、A VX、Coilcraft线艺、Pulse普思、VISHAY威世德国:EPCOS、WE日本:KOA兴亚、muRata村田、Panasonic松下、sumida胜美达、TAIYO YUDEN太诱、TDK、TOKO、TOREX特瑞仕台湾:CHILISIN奇力新、yers美磊、TAI-TECH台庆、TOKEN德键、VIKING光颉、WALSIN华新科、YAGEO国巨中国:Gausstek丰晶、FH风华、CODACA科达嘉、Sunlord顺络、紫泰荆、肇庆英达2、请解释电阻、电容、电感封装的含义:0402、0603、0805。
linux在TQ2440上移植8--启动看门狗+
TQ2440开发大全下载.txt QQ:917603226,danpianjikaifa@ 个人提供单片机嵌入式系统学习指导,PLC 学习视频,电子元件选型指导,PLC 学习指导 以及PLC 和DCS 周边产品开发 TQ2440开发大全下载 linux-2.6.35.3在TQ2440上移植1--建立自己的板子.pdf /source/3227941
uboot讲义.pdf /source/3227054
uboot阶段1(汇编部分)详细分析.pdf /source/3227057
uboot使用说明.pdf /source/3227058
Watchdog Time Support --->
3、应用程序如下 app_wdt.c #include <unistd.h> #include <sys/types.h> #include <sys/stat.h>
#include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <linux/watchdog.h>
linux在TQ2440上移植2--Nandflash驱动,MTD分区.pdf /source/3227943
linux在TQ2440上移植3--yaffs2+文件系统移植.pdf /source/3227944 linux在TQ2440上移植4--yaffs2文件系统制作.pdf /source/3227947 linux在TQ2440上移植5--移植串口传输协议.pdf /source/3227948 linux在TQ2440上移植6--完善串口驱动.pdf /source/3227950 linux在TQ2440上移植7--完善实时时钟RTC.pdf /source/3227951 linux在TQ2440上移植8--启动看门狗+.pdf /source/3227965 linux在TQ2440上移植9--添加触摸屏.pdf /source/3227952 linux在TQ2440上移植10--完善网卡驱动.pdf /source/3227955 linux在TQ2440上移植11--完善声卡驱动.pdf /source/3227956 linux在TQ2440上移植12--完善SDMMC卡驱动.pdf /source/3227958
基于S3C2440的U-boot启动分析
中北 大学信 息与 通信 工程 学院 洪永 学 余 红英
[ 要] 摘 在嵌入 式的世界 中 , 通常没有像 B O 那样 的固件程序 , IS 因此整 个嵌入式 系统的加栽就完全 由B o od r o t ae 来完成, l 所以B o— o t la e是嵌入 式京 统中不可缺 少的重要部分 , 文结合 u b o一 ..部分源代码详细地分析 U— o 启动过程 , o dr 本 — o t 116 Bo t 主要是对 U— o 启 Bo t 动的关键 环节进行较 为详 细的解析 , 其对 U— o t 目 B o在 标板 ¥ C 40 3 2 4 移植分析具有一定的借鉴价值。 [ 关键 词] o t ae U— 0 启动 移植 B ol dr o Bo t 给 内 核 , 代 码 如 下 : g 一 b 一 b a h n m e : d>d >i r — u br _c U B o, — ot全称 为 U iesl ot o dr 即通 用的 B ood r是遵循 MACH TYP S D 2 1 ; 始 化 串 口 函数 只要 是 sr l n , 置 了 nvra B o a e, L ot ae , l E M K4 0初 e a it i— i设 GL P 条款 的开发代码 , 的名字“ 它 通用” 具有两层含义 : 以引导 多种操 U T控制器 , c uam9 0 sc4 Osf .中实现 。 可 AR 在 p / 2f 32 x/e a c r i 1 作 系统 、 支持 多种架构 的 C U P 。它支持如 下操作 系统 :iu 、 e S 、 Lnx N t D B () 2 检测系统 内存映射( e o a ) m m r m p y V Wo s Q X R T S A T S , 持 如 下 C U架 构 : o e C x r 、 N 、 E M 、 RO 等 支 k P Pw r 、 P 对于特定 的开发板 , 内存 的分 布是明确 的, 以可 以直接设 置 , 其 所 o d m k 4 0 m k4 0 rs s e r it m n 函数指定 了开发板 的内存起 M P 、 8 、 R N I 等 。U B o支 持大 多数 C U, 以烧 写 E T 、 b a / d 2 1/ d2 1 .中的da _ i IS x6 A M、 O S — ot P 可 X 2 Y E S 文件系统 映像 , E F2 支持 串口下 载 , 网络下载 , 提供大量 的命令 , 始地址 , 并 代码如下 : it rm i t o ) n a d 相 对于 M z 司的V v, 的使用更复杂 , i公 i i 它 i 但是可 以用来更方便地 调试 n ( i iv d 、 程序 。本文针对 A M架构 中的 s d 2 1 开发板的 U B o启动进行详 R m k4 0 — ot { g > d >b da 0.at HY _ D AM一 ; d- b 一 i rm[]t =P S S R 细分析。 sr 1 g > d >b d m[ .z d一 b - i r O s e=P S S A 2U— o t 动 过 程 分 析 . B o启 a ]i HY _ DR M— — IE lSZ ; 通常 , ot ae 是 严重 地依 赖于硬 件 而实 现的 , 多数 的 B o B l dr o 大 ot — rtr : e u n0 l dr o e启动 过程 分为两个阶段 , a 本文 以开发板 s d 2 1 为例 , U B o m k 40 其 — ot ) 属于两阶段 的B o od r 一阶段 的文件为 cu r 9 0 s r 和 ba / ot ae , l 第 p / m 2 tt . o r a /aS d () 3 获取 U B o操作命 令 — ot s mdk 41  ̄o e e. 2 0 wlv 1 S。 启 动 U B o 后 可 以在 串 口看 到 一 些 打 印 信 号 , 后 会 出 现 — ot 随 2 — ot 一阶段分析 .U B o 1 第 ”MD 4 0#” S K20 字符等待用户输人命令来启动 内核 , 因此 U B o启动内 — ot () 1硬件设备初始化 核 的主要 核心是通 过 U B o命令来 实现 , — ot 在函数 s r a bo 中进行 t _r ot a m t 依次完 成如下设 置 : C U的工作模式设 置为管理 模式 (v ) 关 相 应 的 f s_ i 0 nn — i 等 函数 后 , 入 m i l p0 过 s 将 P sc , l h i t 和 ad i t a n n0 进 a _ o 通 no = 闭 看 门狗 ( T HD G) 设置 P L , L ,C K的 比例 , 闭 MMU gt v Iot d) WA C O , C KHC KF L 关 , en ( om ” e t c 获取U B o命令 , b — ot 然后通过 rn cm a d s0 u_ o m n ( ) , 执行命 cc A HE等 等 。 令, 最终启动内核 。U B o 中的每个命令都通过 u B O M 宏来定 — ot _O TC D 义, 格式如下 : () 2 为加载 B ood r ot ae 的第二段代码 到 R M空间 l A U BOOT C 所 谓 R M空 间 , 是 初始 化 内存芯 片 , 它能 够使 用 。通过 在 A 就 使 MDn m , xrs eetbecm n , sg””e ” (a emaag, p aal, ma d” ae , l ) r o u hp 各项参数的意义 如下 : s rS t t 中调用 l l e i t a. o e l n 函数来设置控制器 , 得外接 S R M。 w v_ i 使 D A L wl v l i t o e e n 部分函数代码 如下 : i ① nm : a e 命令 的名字 , 注意 , 它不是 一个字符 串( 不要 用双引号 括
keil下的s3c2440启动代码分析
由于片面问题,所以可能会看起来不太美观,可以看附件中的内容。
ARM启动代码相当于我们电脑的BIOS,也就是ARM启动时对处理器的一些初始化及嵌入式系统硬件的一些初始化。
由于它直接面对处理器内核和硬件控制器进行编程,一般都是用汇编语言。
一般包括:中断向量表,初始化存储器系统,初始化堆栈,初始化有特殊要求的断口,设备初始化,变量初始化等。
这几天对着RealView MDK-ARM中自带的启动代码研究了一下,遇到问题又对着数据手册和指令表看了一下,总算对S3C2440A的硬件有了一个大致的了解。
学习嵌入式系统重在系统,学习ARM只是为学习嵌入式系统铺路,懒猫比较笨可能在上系统之前要裸奔几天以强化以下对S3C2440A内部结构的了解。
把MDK自带的S3C2440A.S文件的注释发一下,这些是懒猫结合数据手册与ARM指令表理解了,可能会有错误,放在这里只是引导一下像我一样还没有入门的兄弟们,希望你们不要害怕ARM害怕嵌入式,老毛他老人家说的对,世上无难事,只怕有心人,ARM指令就那么多,看一遍不会就多看几遍,还有一定要学习看软件自带的帮助文件.;/*****************************************************************************/;/* S3C2440.S: Startup file for Samsung S3C440 */;/*****************************************************************************/;/* <<< Use Configuration Wizard in Context Menu >>> */ ;/*****************************************************************************/;/* This file is part of the uVision/ARM development tools. */ ;/* Copyright (c) 2005-2008 Keil Software. All rights reserved. */ ;/* This software may only be used under the terms of a valid, current, */;/* end user licence from KEIL for a compatible version of KEIL softwar e */;/* development tools. Nothing else gives you the right to use this softwa re. */;/*****************************************************************************/;下面这些参数是与CPSR状态寄存器有关;参数的由来:这里各个模式的参数是由寄存器CPSR的模式位设置M[4:0]得来的,;比如这里的用户模式,CPSR的M[4:0]设置为10000就是0x10。
S3C2440_LCD控制器中文手册
的GREENVAL[31:0]和BLUELUT寄存器中的BLUEVAL[31:0]作为可编程的查找表入口。与灰度等级 显示类似,在寄存器REDLUR中的8组或者4位域,换言之,REDVAL[31:28],REDLUT[27:24], REDLUT[23:20],,REDLUT[19:16], REDLUT[15:12], REDLUT[11:8],REDLUT[7:4]和REDLUT[3:0] 被分配给每个红色等级。4位(每个域)的可能组合有16种,并且每个红色等级应该被分配16种等级种 的1种。换句话说,用户可以通过该类型的查找表选择合适的红色等级。对于绿色,寄存器GREENLUT 中的GREENVAL[31:0]在查找表中的分配形式与红色是一样的。类似地,寄存器BLUELUT中的 BLUEVAL[31:0]在查找表中也是这样分配的。对于蓝色,2位组成4种颜色等级,与8种红色,绿色等 级是不一样的。 4096 色模式操作
Ok2440-3看门狗驱动代码详细分析
/*希望与各位共同学习,我的QQ是254206940.红色部分为我添加的注释,蓝色把部分为代码自带的注释,紫色部分为我没理解透的地方(主要是我不不明白为什么要那些代码,它们主要起什么作用)。
希望看到我的笔记的同行不吝赐教!linux/drivers/char/watchdog/s3c2410_wdt.c** Copyright (c) 2004 Simtec Electronics* Ben Dooks <ben@>** S3C2410 Watchdog Timer Support** Based on, softdog.c by Alan Cox,* (c) Copyright 1996 Alan Cox <alan@>** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** Y ou should have received a copy of the GNU General Public License* along with this program; if not, write to the Free Software* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA02111-1307 USA*/#include <linux/module.h>#include <linux/moduleparam.h>#include <linux/types.h>#include <linux/timer.h>#include <linux/miscdevice.h>#include <linux/watchdog.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/platform_device.h>#include <linux/interrupt.h>#include <linux/clk.h>#include <linux/uaccess.h>#include <linux/io.h>#include <mach/map.h>#undef S3C_V A_WA TCHDOG#define S3C_V A_WA TCHDOG (0)#include <asm/plat-s3c/regs-watchdog.h>#define PFX "s3c2410-wdt: "#define CONFIG_S3C2410_WA TCHDOG_A TBOOT(0)#define CONFIG_S3C2410_WA TCHDOG_DEFAULT_TIME (15)static int nowayout = W A TCHDOG_NOW AYOUT;static int tmr_margin = CONFIG_S3C2410_WA TCHDOG_DEFAULT_TIME;static int tmr_atboot = CONFIG_S3C2410_WA TCHDOG_A TBOOT;static int soft_noboot;static int debug;module_param(tmr_margin, int, 0);module_param(tmr_atboot, int, 0);module_param(nowayout, int, 0);module_param(soft_noboot, int, 0);module_param(debug, int, 0);MODULE_PARM_DESC(tmr_margin, "Watchdog tmr_margin in seconds. default="__MODULE_STRING(CONFIG_S3C2410_WA TCHDOG_DEFAULT_TIME) ")"); MODULE_PARM_DESC(tmr_atboot,"Watchdog is started at boot time if set to 1, default="__MODULE_STRING(CONFIG_S3C2410_WA TCHDOG_A TBOOT)); MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="__MODULE_STRING(WA TCHDOG_NOW AYOUT) ")");MODULE_PARM_DESC(soft_noboot, "Watchdog action, set to 1 to ignore reboots, 0 to reboot (default depends on ONLY_TESTING)");MODULE_PARM_DESC(debug, "Watchdog debug, set to >1 for debug, (default 0)");typedef enum close_state {CLOSE_STA TE_NOT,CLOSE_STA TE_ALLOW = 0x4021} close_state_t;static unsigned long open_lock;static struct device *wdt_dev; /* platform device attached to */static struct resource *wdt_mem;static struct resource *wdt_irq;static struct clk *wdt_clock;static void __iomem *wdt_base;static unsigned int wdt_count;static close_state_t allow_close;static DEFINE_SPINLOCK(wdt_lock);/* watchdog control routines */#define DBG(msg...) do { \if (debug) \printk(KERN_INFO msg); \} while (0)/* functions */static void s3c2410wdt_keepalive(void)//喂狗,即将计数值赋给WTCNT寄存器{spin_lock(&wdt_lock);writel(wdt_count, wdt_base + S3C2410_WTCNT);spin_unlock(&wdt_lock);}static void __s3c2410wdt_stop(void){unsigned long wtcon;wtcon = readl(wdt_base + S3C2410_WTCON);wtcon &= ~(S3C2410_WTCON_ENABLE | S3C2410_WTCON_RSTEN);writel(wtcon, wdt_base + S3C2410_WTCON);}//将WTCON寄存器的位[5]和位[0]清零,不输出复位信号,停止看门狗static void s3c2410wdt_stop(void)//关看门狗{spin_lock(&wdt_lock);__s3c2410wdt_stop();spin_unlock(&wdt_lock);}static void s3c2410wdt_start(void){unsigned long wtcon;spin_lock(&wdt_lock);__s3c2410wdt_stop(); //关看门狗wtcon = readl(wdt_base + S3C2410_WTCON);wtcon |= S3C2410_WTCON_ENABLE | S3C2410_WTCON_DIV128;/*#define S3C2410_WTCON_ENABLE (1<<5)#define S3C2410_WTCON_DIV128 (3<<3)开启看门狗,设置分频系数为128(这里并没有将其写入控制寄存器,只是设置值而已)*/if (soft_noboot) {wtcon |= S3C2410_WTCON_INTEN; //#define S3C2410_WTCON_INTEN (1<<2)使能看门狗中断wtcon &= ~S3C2410_WTCON_RSTEN; //#define S3C2410_WTCON_RSTEN (0x01),不输出复位信号} else {wtcon &= ~S3C2410_WTCON_INTEN; //禁止看门狗中断wtcon |= S3C2410_WTCON_RSTEN; //允许输出复位信号}DBG("%s: wdt_count=0x%08x, wtcon=%08lx\n",__func__, wdt_count, wtcon);writel(wdt_count, wdt_base + S3C2410_WTDA T);writel(wdt_count, wdt_base + S3C2410_WTCNT); //写入计数值writel(wtcon, wdt_base + S3C2410_WTCON); //写WTCON寄存器,前面的设置会生效spin_unlock(&wdt_lock);}static int s3c2410wdt_set_heartbeat(int timeout){unsigned int freq = clk_get_rate(wdt_clock);//获得时钟,这里的时钟应该是系统初始化时设置好了的。
电子科技大学微机系统原理与接口第二版课后习题答案chapter10习题解答
“微处理器系统原理与嵌入式系统设计”第十章习题解答10.2 简述以ARM微处理器为核心的最小硬件系统的组成?●ARM微处理器;●电源模块,包括CPU内核和I/O接口电源;●时钟模块,包括系统主时钟和实时时钟;●复位模块,包括系统加电复位、手动复位和内部复位;●存储器模块,包括程序保存存储器和程序运行存储器;●JTAG调试接口模块。
10.4 简述S3C2440A芯片中各模块时钟信号产生及配置的原理。
为降低系统功耗,可时钟信号进行哪些处理?系统复位信号与各时钟信号有什么关系?当系统主时钟送入S3C2440A芯片后,进入其时钟发生模块,由锁相环进行相应的处理,最终得到FCLK,HCLK,PCLK和UCLK四组时钟信号。
其中,FCLK信号主要供给ARM920T内核使用,HCLK主要供给AHB总线、存储器控制器、中断控制器、LCD控制器、DMA控制器和USB主机模块;PCLK主要供给访问APB总线的外设,例如WDT,I2S,I2C,PWM定时器,MMC接口,ADC,UART,GPIO,RTC和SPI模块;UCLK主要提供USB模块需要的48MHz 时钟。
为降低系统功耗,可对时钟信号进行门控管理。
最低功耗情况下,只开启FCLK信号,其他时钟信号关闭;若需对其他外设,只需使能相应总线及外设的时钟信号有效即可。
系统复位信号一般包括加电复位、手动复位和内部复位三类。
其中,加电复位和手动复位信号均来自外部复位电路,内部复位信号一般来自系统内部事务处理(例如看门狗复位等)。
因此,系统对外部复位信号波形有一定的要求,若不能满足要求系统将不能正常工作。
在S3C2440A芯片中,要完成正确的系统复位,在处理电源保持稳定之后,该信号必须至少维持4个FCLK时钟的低电平状态。
10.6 利用S3C2440A的GPIO端口,设计包含8个LED的流水灯电路,每个LED 间隔1S轮流点亮,试画出程序流程图并写出相关程序段。
假设利用S3C2440A芯片的GPIO端口G的第0~7引脚驱动8个LED电路,对应GPIO输出为0时LED灯亮,则相应程序流程图及相应程序段如下所示:GPGCON EQU 0x56000060GPGDAT EQU 0x56000064GPGUP EQU 0x56000068;配置GPGCON寄存器,设置相关引脚为输出功能LDR R0,=GPGCONLDR R1,[R0]BIC R1,R1,#0x0000FFFFORR R1,R1,#0x00005555STR R1,[R0];配置GPGUP寄存器,断开各上拉电阻LDR R0,=GPGUPLDR R1,[R0]ORR R1,R1,#0x00FFSTR R1,[R0];输出驱动数据,点亮对应LED等LDR R2,=GPGDATLDR R3,[R2]BIC R3,R3,#0x00FFORR R3,R3,#0x00FESTR R3,[R2]LDR R0,=0xFFFFFF ;初始计数值BL DELAY ;调用延迟子程序…LDR R2,=GPGDATLDR R3,[R2]BIC R3,R3,#0x00FFORR R3,R3,#0x007FSTR R3,[R2]LDR R0,=0xFFFFFF ;初始计数值BL DELAY ;调用延迟子程序B LOOPSTARDELAYSUB R0,R0,#1CMP R0,#0x0BNE DELAYMOV PC,LR10.7 在上题中,如果要加入一个按键,实现按键按下时流水灯停止流动,按键放开时流水灯正常流转的功能,思考应怎样修改电路和程序?在上题的基础上,添加一个GPIO口作为输入管脚(GPA的GPA[0]),按键按下GPA[0]值为1,否则为零。
S3C2440启动代码经验总结
1、引言2、汇编基础2.1、伪操作GET 伪操作类似于C 语言里面的include,是将一个源文件包含到当前源文件中,并将被包含的文件在其当前位置进行汇编处理。
IMPORT伪操作相当于C 语言中的extern 声明,它告诉编译器当前的符号不再本源文件中定义,而是在其他源文件中定义,在本源文件中可能引用该符号。
AERA 伪操作用于定义一个代码或者数据段。
ASSERT在汇编编译器对汇编程序的扫描中,如果ASSERT 中条件不成立,ASSERT 伪操作将报告错误信息。
2.2、汇编指令LDR伪指令将一个32 位的常数或者一个地址值读取到寄存器中。
BL跳转指令,L 决定是否保存返回地址。
MRS用于将状态寄存器的内容传送到通用寄存器中。
MSR用于将通用寄存器的内容或一个立即数传送到状态寄存器中。
LDM和STM分别为批量Load/Store内存访问指令。
FD为满递减数据栈。
3、启动代码功能模块分解启动代码主要是在主程序运行之前初始化系统硬件及软件的运行环境,它的主要功能包括以下的几个方面:* 建立中断向量表* 初始化系统堆栈* 应用程序执行环境初始化* 跳转至主函数3.1、系统堆栈初始化ARM有7种模式:* 用户模式* 快速中断模式* 中断模式* 管理模式* 中止模式* 未定义模式* 系统模式系统堆栈的初始化主要是给各个处理器模式分配堆栈空间。
堆栈是为中断或程序跳转服务的,当发生中断或程序跳转时,需要将当前处理器的状态及一些参数保持在堆栈中,当中断处理完毕以后或程序执行完后返回时,再将堆栈保存的现场数据进行恢复,以保证原来的程序正确运行。
USERMODE EQU 0x10 ;用户模式FIQMODE EQU 0x11 ;快速中断模式IRQMODE EQU 0x12 ;中断模式SVCMODE EQU 0x13 ;监管模式ABORTMODE EQU 0x17 ;异常中断模式UNDEFMODE EQU 0x1b ;未定义模式MODEMASK EQU 0x1f ;模式掩码NOINT EQU 0xc0 ;取消中断;设置工作模式的堆栈的起始地址;在option.inc 中定义了_STACK_BASEADDRESS EQU 0x33ff8000 UserStack EQU (_STACK_BASEADDRESS-0x3800) ;堆栈空间0x33ff4800 SVCStack EQU (_STACK_BASEADDRESS-0x2800) ;堆栈空间0x33ff5800 UndefStack EQU (_STACK_BASEADDRESS-0x2400) ;堆栈空间0x33ff5c00AbortStack EQU (_STACK_BASEADDRESS-0x2000) ;堆栈空间0x33ff6000IRQStack EQU (_STACK_BASEADDRESS-0x1000) ;堆栈空间0x33ff7000 FIQStack EQU (_STACK_BASEADDRESS-0x0) ;堆栈空间0x33ff8000堆栈初始化的顺序决定系统最后运行在哪种处理器模式,最后初始化哪种模式的堆栈,系统就运行在哪种模式。
电子技术考试题库
电子技术考试题库(附参考答案)1、 请列举您知道的电阻、电容、电感品牌(最好包括国内、国外品牌) 。
电阻:RALEC旺诠、ROYALOHM、SUPEROHM、UniOhm、TAI大毅、TDK、TOKEN、VISHAY、YAGEO、广东风华 电容:A VX、KEMET、Kyocera、muRata、NEC、nichicon、Panasonic、SAMSUNG、SANYO、TAIYO YUDEN、TDK、 VISHAY、YAGEO、广东风华、电感: AEM、 EPCOS、 ETC、 Gausstek丰晶、 muRata、 sumida村田、 Sunlord顺络、 TAITECH台庆、 TDK、 TOKEN、 TOREX、 VISHAY、WE、YAGEO国巨、柯爱亚、科达嘉、奇力新、千如电子、捷比信、紫泰荆、肇庆英达、广东风华2、 请解释电阻、电容、电感封装的含义:0402、0603、0805。
表示的是尺寸参数。
0402:40*20mil;0603:60*30mil;0805:80*50mil。
3、 请问电阻、电容、电感的封装大小分别与什么参数有关?电阻封装大小与电阻值、额定功率有关;电容封装大小与电容值、额定电压有关;电感封装大小与电感量、额定电流有关。
4、 某CPU要求某些IO端口接上下拉电阻, 电阻范围可选择1~10K欧姆。
以下规格的电阻, 您会选择哪一种: 1K/1%、 4.99K/1%、10K/1%、1K/5%、2.2K/5%、4.7K/5%、8.2K/5%、10K/5%、3.9K/10%、5.6K/10%、4.7K/20%?从理论上来说,1~10K的电阻都可以采用,但如果从价格上考虑,当然是4.7K/20%的最合算。
5、 请简述压敏电阻工作原理。
当压敏电阻上的电压超过一定幅度时,电阻的阻值降低,从而将浪涌能量泄放掉,并将浪涌电压限制在一定的幅度。
6、 请简述PTC热敏电阻作为电源电路保险丝的工作原理。
S3C2440开发板硬件资源简介
集成度高
集成了许多常用的外设 接口,减少了外部硬件
的依赖。
易于开发
提供了丰富的开发资源 和文档,方便开发者快
速上手。
处理器的应用领域
嵌入式系统
移动设备
由于其高性能和低功耗特性,S3C2440广 泛应用于嵌入式系统领域。
由于其低成本和集成度高的特点, S3C2440也广泛应用于智能手机、平板电 脑等移动设备领域。
一款基于ARM920T内核的微 处理器,由Samsung公司生产。
处理器核
பைடு நூலகம்ARM920T,主频可达 400MHz。
接口
丰富的外设接口,如UART、 SPI、I2C、USB等。
处理器的特点
高性能
低功耗
采用ARM920T内核,主 频高达400MHz,具有 强大的数据处理能力。
采用低功耗设计,延长 了设备的使用时间。
VGA接口广泛用于计算机 显示输出,与其他显示设 备具有良好的兼容性。
05
电源与功耗管理
电源管理
电源管理单元(PMU)
负责电源的分配和管理,确保各模块正常工作。
电源模式
支持多种电源模式,如正常模式、休眠模式和关机模式,以满足不 同需求。
电源接口
提供多种电源接口,如USB、锂电池等,方便开发板供电。
设。
GPIO接口具有灵活的配置和 操作方式,可以根据需要进行
输入或输出操作。
串口接口
01
串口接口是一种常见的通信接口,常用于与其他设备进行数据 通信。
02
S3C2440开发板提供了多个串口接口,可以用于与外部设备进
行数据传输。
串口接口支持多种通信协议,如RS-232、RS-485等,可以根据
S3C2440启动流程
我想请问下。
主板上的DL1灯是在什么阶段点亮的?[2010-6-13 下午02:40:44] michael: 早上打电话给你,还怕打扰你休息了。
原来你们也需要上班。
呵呵[2010-6-13 下午02:40:58] Zhilong Wu: 应该在uboot 里.一开机的时候.[2010-6-13 下午02:42:00] michael: 我们现在有些板启动不了。
发现UART口没有U-BOOT输出信息。
DL1灯不亮[2010-6-13 下午02:44:03] Zhilong Wu: 每个flash 芯片,烧uboot的时候,有没有重新读出一遍,做检查. 确保uboot 是烧好的[2010-6-13 下午02:44:05] michael: DL1灯是UBOOT来控制的还是什么模块控制的?[2010-6-13 下午02:44:51] Zhilong Wu: uboot , 通过cpu的io[2010-6-13 下午02:47:44] michael: 烧写UBOOT的时候,应该是怎样的流程?我们现在是erase--->blank_check-->program---->verify[2010-6-13 下午02:48:07] Zhilong Wu: 这样也可以[2010-6-13 下午02:49:42] michael: DL1有几个阶段:[2010-6-13 下午02:50:12] michael: 不亮,常亮,慢闪,快速[2010-6-13 下午02:50:32] Zhilong Wu: 在uboot 就是一个状态.[2010-6-13 下午02:50:46] Zhilong Wu: 长亮.[2010-6-13 下午02:51:12] Zhilong Wu: 能闪的时候,表示uboot 没问题.起来wince 了[2010-6-13 下午02:51:21] michael: 噢。
S3C2440重要资料
S3C2440与SDRAM的地址连线分析S3C2440有27根地址线ADDR[26:0],8根片选信号ngcs0-ngcs7,对应bank0-ba nk7,当访问bankx的地址空间,ngcsx引脚为低电平,选中外设。
2^27=2^7 * 2^10 * 2^10 = 128Mbyte8*128Mbyte = 1Gbyte所以S3C2440总的寻址空间是1Gbyte。
市面上很少有32位宽度的单片SDRAM,一般选择2片16位SDRAM扩展得到32位SDRAM.选择的SDARM是HY57V561620F,4Mbit * 4bank *16,共32Mbyte。
首先了解下SDRAM的寻址原理。
SDRAM内部是一个存储阵列。
可以把它想象成一个表格。
和表格的检索原理一样,先指定行,再指定列,就可以准确找到所需要的存储单元。
这个表格称为逻辑B ANK。
目前的SDRAM基本都是4个BANK。
寻址的流程就是先指定BANK地址,再指定行地址,最后指定列地址。
这就是SDRAM的寻址原理。
存储阵列示意图如下:查看HY57V561620F的资料,这个SDRAM有13根行地址线 RA0-RA129根列地址线CA0-CA82根BANK选择线 BA0-BA1SDRAM的地址引脚是复用的,在读写SDRAM存储单元时,操作过程是将读写的地址分两次输入到芯片中,每一次都由同一组地址线输入。
两次送到芯片上去的地址分别称为行地址和列地址。
它们被锁存到芯片内部的行地址锁存器和列地址锁存器。
/RAS是行地址锁存信号,该信号将行地址锁存在芯片内部的行地址锁存器中;/CAS是列地址锁存信号,该信号将列地址锁存在芯片内部的列地址锁存器中。
地址连线如下图:SDRAM的A0接S3C2440的ADDR2,很多初学者都对这里又疑问。
A0为什么不接ADDR0?要理解这种接法,首先要清楚在CPU的寻址空间中,字节(8位)是表示存储容量的唯一单位。
用2片HY57V561620F扩展成32位SDRAM,可以认为每个存储单元是4个字节。
S3C2440A跑马灯设计
功能2 EINT23 EINT22 EINT21 EINT20 EINT19 EINT18 EINT17 EINT16
功能3 — — — — TCLK1 nCTS1 nRTS1 —
引脚名称 GPG7 GPG6 GPG5 GPG4 GPG3 GPG2 GPG1 GPG0
功能1
功能2
功能3 SPICLK1 SPIMOSI1 SPIMISO1 LCD_PWREN nSS1 nSS0 — —
0 =输出;
0 =输出; 0 =输出; 0 =输出;
1 = nGCS[3]。
1 = nGCS[2]。 1 = nGCS[1]。 1 = ADDR26。
1
1 1 1
GPA10
[10]
0 =输出;
1 = ADDR25。
1
4.2.2 端口配置寄存器
引脚名称 GPACON 描述 初始值
GPA9 GPA8 GPA7 GPA6
—
— — — — — —
4.2.1 端口功能
3.端口C的GPIO引脚功能 端口C的I/O引脚共有16个,每个引脚的功能如表4-18所示。
表4-18 端口C的引脚功能
引脚名称 功能1 功能2 功能3 引脚名称 GPC7 GPC6 GPC5 功能1 输入/输出 输入/输出 输入/输出 功能2 LCD_LPCREVB LCD_LPCREV LCD_LPCOE 功能3 — — —
4.2.1 端口功能
4.2.1 端口功能
1.端口A的GPIO引脚功能 端口A的I/O引脚共有23个,每个引脚的功能如表4-16所示。
引脚名称 GPA22 GPA21 功能1 输出 输出 功能2 nFCE nRSTOUT 功能3 — — 引脚名称 GPA11 GPA10 GPA9 GPA8 GPA7 GPA6 GPA5 GPA4 GPA3 GPA2 GPA1 GPA0 功能1 输出 输出 输出 输出 输出 输出 输出 输出 输出 输出 输出 输出 功能2 ADDR26 ADDR25 ADDR24 ADDR23 ADDR22 ADDR21 ADDR20 ADDR19 ADDR18 ADDR17 ADDR16 ADDR0 功能3 — — — — — — — — — — — —
第1讲三星s3c2440微处理器
掉电模式:所有外设和内核的电源都切断了;
1. 可以通过EINT[15:0]或RTC报警中断来从掉电模式中唤醒处
理器
12
S3C2440A特性
中断控制器
60个中断源(1个看门狗定时器,5个定时器, 9个UARTs,24个外部中断,4个DMA,2个 RTC,2 个ADC,1 个IIC,2 个SPI,1个SDI, 2个USB,1 个LCD和1个电池故障,1个NAND 和2个Camera),1个AC97音频
电平/边沿触发模式的外部中断源 可编程的边沿/ 电平触发极性 1. 支持为紧急中断请求提供快速中断服务
13
S3C2440A特性
具有脉冲带宽调制功能的定时器(PWM) 4 通道16位具有PWM功能的定时器,1通道16
位内部定时器,可基于DMA或中断工作 可编程的占空比周期,频率和极性 能产生死区 1. 支持外部时钟源
Main TFT LCD & TSP
1/2/4/8/16 bpp Up to QVGA
SD/SDIO IIS I/F
Audio Codec
TDMB/WLAN
SD/MMC Stereo Speaker Head Set Mic
引言
三星公司推出的16/32位RISC微处理器 S3C2440A,为手持设备和一般类型应用 提供了低价格、低功耗、高性能小型微 控制器的解决方案。
–LCD 实际尺寸的典型值是:640 ×480,320 ×240, 160×160 及其他
–最大虚拟屏幕大小是4M字节
–256 色模式下支持的最大虚拟屏是:4096 ×1024,
2048 ×2048,1024×4096等
17
S3C2440A特性
TFT彩色显示屏 支持彩色TFT的1,2,4或8bbp(像素每位)调色显示 支持16,24bbp无调色真彩显示TFT 在24bbp 模式下支持最大16M色TFT lpc3600定时控制器,为嵌入式lts350Q1-PD1/2(SAMSUNG
基于S3C2440 的VIVI bootloader扩展命令基本方法
基于S3C2440 的VIVI bootloader扩展命令基本方法【摘要】vivi是一款轻量级的bootloader程序,性能稳定,扩展方便。
对s3c24x0系列的arm9处理器作了优化,一直s3c2440上得到广泛的应用。
本文介绍了vivi的启动流程和基本功能配置,以及如何在vivi的中扩展命令。
使用vivi提供的命令注册函数和注册流程,定制用户的命令,增强vivi bootloader的功能。
【关键词】vivi;bootloader;s3c2440;命令扩展0 引言vivi 是由韩国mizi公司开发的一款开源bootloader程序。
虽然mizi公司已经停止了vivi版本的更新,但目前很多s3c2410、s3c2440等处理器一直使用vivi作为bootloader程序(或基于vivi 的衍生)。
对于s3c2410、s3c2440等系列的处理器,vivi有较好的稳定性和扩展性。
这里我们基于s3c2440处理器平台,介绍一下vivi 的使用和命令扩展方法。
1)bootloader 作用简介bootloader 是嵌入式系统在引导操作系统内核或用户应用程序之前运行的一段程序。
主要完成芯片上电到系统引导前的一系列初始化功能,和提供一些辅助功能。
由于嵌入式操作系统越来越复杂,操作系统和处理器也呈现多样化的发展趋势。
嵌入式操作系统很难实现对所有处理器的上电初始化的适用,而且随着处理器的集成度越来越高,系统引导的工作差异也越来越大。
bootloader的主要功能可以归纳为以下几点[1]:(1)初始化存储器,包括操作系统启动是使用到的rom和ram;(2)处理器芯片类型的检测,并最终将此参数交给操作系统;操作系统内核会识别处理器架构等,并作特殊化处理;(3)初始化必要的外设,不同系统有不同需求,但最好至少留一个通信串口作调试;(4)加载操作系统内核。
2)几种常见的bootloader比较常见的几种开源bootloader有:u-boot、redboot和vivi。
硬件经典面试题及答案
电荷泵通过开关对电容充放电实现升压,因为电路没有电感元件储能,驱动能力较弱,只可以用于小电流场合。 24、请列举您知道的复位 IC 型号。
IMP809、IMP811。 25、请列举您知道的 51 单片机型号。
AT89C2051、AT89C51、AT89S52、W78E65、W78E516B。 26、请列举您知道的 ARM CPU 型号。
13、请简述 TVS 瞬态电压抑制二极管的工作原理。 当 TVS 上的电压超过一定幅度时,器件迅速导通,从而将浪涌能量泄放掉,并将浪涌电压限制在一定的幅度。
14、请列举您知道的二极管型号。 1N4148、1N5817、1N5819、1N5820、1N5822、1N4001、1N4007、SR160、SR360、BAT54A、BAT54C、BAT54S
人体模型(HBM)、机器模型(MM)、带电器件模型(CDM)。 29、请问 RoHS 指令限制在电子电气设备中使用哪六种有害物质?
限制使用铅、汞、镉、六价铬、多溴联苯(PBB)和多溴二苯醚(PBDE)等六种有害物质。 30、晶体管基本放大电路有共射、共集、共基三种接法,请简述这三种基本放大电路的特点。
S3C4510B、S3C44B0、S3C2440、S3C2442、S3C2443、S3C2410、S3C2412、S3C2416、S3C 6400、OMAP3530、AM3517 27、请解释 WatchDog(看门狗)的工作原理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
看门狗定时器的主要作用是在程序因为干扰而跑飞后,能够使系统复位,不至于使系统永远的死下去。
它的原理与一般的定时器没有多大区别,就是先要设置好一段时间,当超过这段时间后,就从当前运行的程序中跳出进入中断处理程序中。
但两者的主要差别是,一般的定时器中断是我们希望它发生的,因此我们不会在定时器中断发生前的那个时间段内干预它;而看门狗定时器中断是我们不希望它发生的,因此我们要想方设法地避免其发生。
主要的方法就是在中断发生前,重新对看门狗定时器的寄存器进行赋值,使它的定时器重新开始计时。
这种方法俗称喂狗,形象地比喻就是一条看门狗每隔一段时间(比如说一个小时)就会饿,所以就要叫唤,唯一使它不叫的方法就是给它喂食,那么下次叫唤的时间就是从当前喂食起的一个小时后。
因此只要在上次喂食后的一个小时内再给它喂食,它就永远不会叫唤。
s3c2440的看门狗定时器不仅可以引起系统复位,还可以引起一般的中断,因此s3c2440的看门狗定时器可以当作一般的定时器使用。
s3c2440看门狗定时器的时钟频率的公式为:
PCLK÷(Prescaler + 1)÷Division
其中Prescaler的取值范围为0~255,Division的取值为16,32,64和128。
例如,当PCLK为50MHz时,设置Prescaler为249,Division为16,则看门狗定时器的时钟频率为12.5kHz。
这两个参数由寄存器WTCON提供,除此以外,该寄存器还可以设置是否有效看门狗定时器的超时复位,是否有效看门狗定时器的超时中断等。
看门狗定时器还有两个寄存器WTDAT和WTCNT,WTDAT用于确定超时期限,WTCNT为当前看门狗定时器的计数值,在第一次设置看门狗超时时间时,这两个寄存器都要被写入超时时间的初始值。
当要启动超时中断时,还要设置必要的中断寄存器,
下面这个程序就是一个看门狗定时器的实例。
该程序就是正常的跑马灯程序,但加了一个看门狗定时器。
我们设置的看门狗定时器超时时,只会触发中断,不会引起系统复位。
在中断函数内,蜂鸣器会响。
我们设置看门狗定时器的超时期限为4秒,为了不让程序进入看门狗中断,必须在该期限内,往寄存器WTCNT内写数,迫使看门狗定时器重新开始计时。
#define _ISR_STARTADDRESS 0x33ffff00
#define pISR_WDT_AC97 (*(unsigned
*)(_ISR_STARTADDRESS+0x44))
#define U32 unsigned int
#define rGPBCON (*(volatile unsigned *)0x56000010) //Port B control
#define rGPBDAT (*(volatile unsigned *)0x56000014) //Port B data
#define rGPBUP (*(volatile unsigned *)0x56000018) //Pull-up control B
#define rSRCPND (*(volatile unsigned *)0x4a000000) //Interrupt request status
#define rINTMSK (*(volatile unsigned
*)0x4a000008) //Interrupt mask control
#define rINTPND (*(volatile unsigned
*)0x4a000010) //Interrupt request status
#define rSUBSRCPND (*(volatile unsigned *)0x4a000018) //Sub source pending
#define rINTSUBMSK (*(volatile unsigned *)0x4a00001c) //Interrupt sub mask
#define rWTCON (*(volatile unsigned *)0x53000000) //Watch-dog timer mode
#define rWTDAT (*(volatile unsigned *)0x53000004) //Watch-dog timer data
#define rWTCNT (*(volatile unsigned *)0x53000008) //Eatch-dog timer count
void delay(int a)
{
int k;
for(k=0;k<a;k++)
;
}
void __irq watchdog(void)
{
rGPBDAT |= 1; //蜂鸣器响
//清中断标志位
rSRCPND = 0x1<<9;
rSUBSRCPND = 0x1<<13;
rINTPND = 0x1<<9;
}
void Main(void)
{
int light;
int temp;
int i;
rGPBCON = 0x015551; //B0输出,给蜂鸣器;
B5~B8输出,给LED
rGPBUP = 0x7ff;
rWTCON = 0xf9<<8; //Prescaler = 249,Division = 16,时钟频率为12.5kHz
//禁止看门狗复位
rWTDAT = 50000; //设置看门狗定时器超时时间为4秒(50÷12.5)
rWTCNT = 50000;
rWTCON |= (1<<5)|(1<<2); //开启看门狗定时器中断
rSRCPND = 0x1<<9;
rSUBSRCPND = 0x1<<13;
rINTPND = 0x1<<9;
rINTSUBMSK = ~(0x1<<13); //打开中断子屏蔽
rINTMSK = ~(0x1<<9); //打开中断屏蔽
pISR_WDT_AC97 = (U32)watchdog;
light = 0x10;
light = light<<1;
temp = light | 1;
rGPBDAT = ~temp;
delay(500000);
while(1)
{
for (i=0;i<3;i++)
{
light = light<<1;
temp = light | 1;
rGPBDAT = ~temp;
delay(500000);
}
rWTCNT = 50000; //喂狗,重新赋值,防止中断 for (i=0;i<3;i++)
{
light = light>>1;
temp = light | 1;
rGPBDAT = ~temp;
delay(500000); }
}
}。