S3C2440开发板裸机程序系列01--流水灯

发布者:lqs1975最新更新时间:2021-10-14 来源: eefocus关键字:S3C2440  开发板  裸机程序  流水灯 手机看文章 扫描二维码
随时随地手机看文章

平台介绍:TQ2440开发板,NorFlash 2M,NandFlash 521M(K9F4G08U0B), 2个32MSDRAM(H57V2562GTR-60C)


本系列目的:记录TQ2440裸机编程过程,顺便兼顾mini2440。


本篇内容:1.介绍GPIO要点;2.TQ2440流水灯编程;3.ADS1.2建立工程;4.下载执行;5.介绍启动程序


1. S32440的GPIO


查阅TQ2440的底板和核心板原理图,如下:

     

可知,LED1--GPB5, LED2--GPB6, LED3--GPB7, LED4--GPB8


查S3C2440手册,可知GPB有3个控制寄存器

其中,GPBCON配置引脚功能(2位),是输入、输出、特殊;GPBDAT设置引脚状态(1位);GPBUP设置是否启用上拉电阻


上拉电阻的作用:1.解决总线驱动能力不足时提供电流;2.管脚悬空时容易受到外界干扰,加上拉电阻使引脚稳定在高电平,提高总线抗电磁干扰能力。


2. 参考程序:


Main.c


#include "led.h"

#include "common.h"

 

int Main()

{

Led_Init();

while(1)

{

LED01_ON; Delay(); LED01_OFF;

LED02_ON; Delay(); LED02_OFF;

LED03_ON; Delay(); LED03_OFF;

LED04_ON; Delay(); LED04_OFF;

LED01_ON;LED02_ON;LED03_ON;LED04_ON;

Delay();Delay();Delay();

LED01_OFF;LED02_OFF;LED03_OFF;LED04_OFF;

Delay();Delay();Delay();

LED01_ON;LED02_ON;LED03_ON;LED04_ON;

Delay();Delay();Delay();

LED01_OFF;LED02_OFF;LED03_OFF;LED04_OFF;

}

}

led.c


#include "led.h"

#include "2440addr.h"

 

void Led_Init(void)

{

rGPBCON &= ~((3<<10)|(3<<12)|(3<<14)|(3<<16));

rGPBCON |= ((1<<10)|(1<<12)|(1<<14)|(1<<16)) ;

rGPBUP &=  ~((1<<5)|(1<<6)|(1<<7)|(1<<8)) ;

rGPBDAT |= (1<<5)|(1<<6)|(1<<7)|(1<<8);

}

common.c


void Delay(void)

{

int i;

for(i=0;i<1000000;i++);

}

led.h


#ifndef __LED_H__

#define __LED_H__

 

#include "2440addr.h"

 

#define LED01_ON {rGPBDAT &= (~(1<<5));}

#define LED01_OFF {rGPBDAT |= (1<<5);}

#define LED02_ON {rGPBDAT &= (~(1<<6));}

#define LED02_OFF {rGPBDAT |= (1<<6);}

#define LED03_ON {rGPBDAT &= (~(1<<7));}

#define LED03_OFF {rGPBDAT |= (1<<7);}

#define LED04_ON {rGPBDAT &= (~(1<<8));}

#define LED04_OFF {rGPBDAT |= (1<<8);}

 

extern void Led_Init(void);

 

#endif

common.h


#ifndef __COMMON_H__

#define __COMMON_H__

 

extern void Delay(void);

 

#endif

3.ADS1.2建立工程


ads1.2建立工程ARM Executable Image;添加文件;设置如下:








4.下载执行


开发板接3根线:1根5V电源,1根串口接电脑,1根TypeB USB接电脑。要安装TQ2440_USB下载驱动。串口可用SecureCRT软件打开。

可以选7,即直接下载到SDRAM中执行,也可以选a,即下载到NandFlash中,再从NandFlash启动即可。(我开始选a,把原Nandflash的uboot冲了,后来又充单独下载了一次uboot,nandflash仍恢复成linux,可行。)


5.介绍启动程序


必须要有启动代码,启动代码实现:


建立异常中断向量表;

初始化各模式的堆栈;

初始化硬件(关闭开门狗,设置系统时钟,设置SDRAM等);

初始化执行环境(加载域到执行域,即将代码从Nandflash拷贝到SDRAM)

跳转到c主程序。

————————————————

版权声明:本文为CSDN博主「君乙杨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/yangqiwei2012/article/details/80374072


关键字:S3C2440  开发板  裸机程序  流水灯 引用地址:S3C2440开发板裸机程序系列01--流水灯

上一篇:S3C2440裸机------GPIO
下一篇:S3C2440开发板裸机程序系列02--按键和蜂鸣器

推荐阅读最新更新时间:2024-11-16 23:34

第一个ARM裸机程序
1.查看原理图和数据手册,设置IO口功能 提示:此处使用的芯片是三星的S3C2440A 1.1.LED1,连接到GPF4的IO口,从原理图看出是低电平点亮LED灯。 1.2查看数据手册,配置寄存器 寄存器的描述 查看这些寄存器的具体功能,直接定位到GPF这一组寄存器的端口 看GPF具体位的定义是什么? 配置好输出模式之后,设置GPF4的输出电平,写GPFDAT寄存器,具体描述如下: 小结: 控制GPF4需要设置两个寄存器,GPFCON,GPFDAT 1.设置GPF = 0b01 --GPF4配置为输出 2.设置GPFDAT = 0或者1; --GPF4输出低/高电平 2.S3C
[单片机]
第一个ARM<font color='red'>裸机</font><font color='red'>程序</font>
中断和异常
1 检测事件发生的方式:轮询方式和中断方式 2 S3C2440异常中断系统框图 中断是异常的一种。 ARM处理器不同模式间的切换: a、在特权级(非用户模式)的运行模式下,可以通过修改程序状态寄存器CPSR的模式控制位,切换运行模式。 b、通过异常处理过程进行运行模式切换。 注意,用户模式下,不能直接进行处理器模式的切换,需要通过产生异常处理,在异常处理过程中,进行处理器运行模式的切换。 3 ARM寄存器 未备份寄存器:模式间共用。 备份寄存器:某模式下专有。 对程序计数器PC的值的理解: PC指向对于读取级的指令地址,而不是处于执行级的指令地址,根据流水线深度的的不同,相对于当前指令地址
[单片机]
中断和异常
S3C2440学习四(如何使用Jlink)
下载程序: 1、 连上Jlink的USB到PC上。连接JTAG到GT2440开发板上,选择从Nor Flash 启动。 2、 板子上电后,启动J-Flash ARM 。File - New Project新建一个工程,然后去配置Options- Project Settings- Target Interface中,为了提升速度,把Jtag Speed After Init设置为第三项,选择2000KHz。 3、 在Flash选项中,要正确输入Base Address:00000000,Organization:16 Bits X 1 chip(s)。并勾选Automatically detect flash memory。(地址
[单片机]
4412开发板图像识别项目-移植百度AI依赖库curl(三)
通过百度AI的快速入门手册,我们可以知道,如果要调用百度AI的接口,我们需要移植依赖库libcurl,openssl和jsincpp库。 环境:迅为提供的ubuntu16.04 编译器:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 开发板:迅为4412开发板 一.jsoncpp库简介 JSON全称为JavaScript ObjectNotation,它是一种轻量级的数据交换格式,易于阅读、编写、解析。jsoncpp是c++解析JSON串常用的解析库之一。 二.移植 1,解压压缩包进进入解压后的目录 tar -vxf jsoncpp-1.
[单片机]
4412<font color='red'>开发板</font>图像识别项目-移植百度AI依赖库curl(三)
AVR单片机学习(四)C语言的流水灯验证
AVR 的IO口简介与寄存器的概念 一、何谓 寄存器 寄存器就是RAM中的一些特殊单元,映射片上外设的特殊功能 二、何谓 IO口 可以将 0 与1转换为电压信号的端口 单片机中最常用的TTL电平:0V代表 0 ,+5V 代表 1 Mega16有4个IO口,PA,PB,PC,PD 三、IO口的性能指标 灌电流能力:能够流入IO口的最大电流 拉电流能力:能够从IO口流出的最大电流 上拉电阻与下拉电阻 最大输入电压 IO口的两种状态 如上图(有个选择开关实际电路中不存在的为了好理解才给出的)输出就是 要么给个5V 要么给个地 0V 就是输出0 和 1
[单片机]
AVR单片机学习(四)C语言的<font color='red'>流水灯</font>验证
u-boot-1.3.4移植到s3c2440之nand驱动
折腾了两个晚上,终于把s3c2440板子上的nand驱动搞定了,把需要注意的地方记下来,供大家参考。 这次使用的u-boot版本为1.3.4,现在还没有加上从nand启动的部分,现在使用从sdram启动的方式,修改好nand驱动后,现在环境变量可以存放到nand中,具体要修改的地方如下: 1、板子配置头文件 在板子的配置头文件中要加入如下代码: ....................................................... #define CONFIG_CMD_NAND #define CFG_ENV_IS_IN_NAND 1 #define CFG_ENV_SIZE 0x10000
[单片机]
ARM Linux S3C2440 之时钟分析
S3c2440 时钟 & 电源管理时钟由三部分组成: Clock control ,USB control, 和 Power control Clock control 部分可以产生时钟FCLK,提供ARM内核,HCLK 提供 AHB 总线外设,还有 PLCK APB 总线外设。 s3c2440 有两个内置的PLLS 锁相环,一个提供给 FCLK,HCLK,和PCLK,另一个提供给USB时钟(48MHZ)。Clock control 可以不使用PLL,而降低的时钟,通过软件设置,时能各中种外设,从而可以降低功耗。 Power control部分,用于电能管理,有四种工作模式:Normal mode, Slow mode, Idl
[单片机]
STM32学习---GPIO和按键(流水灯学习)
//main的完整过程: int main(void){ LED_GPIO_CONFIG(); //定义LED灯; KEY_GPIO_CONFIG(); //定义按键; //循环判断按键的过程: while(1){ if((KEY_SCANF(GPIOC,GPIO_Pin_5)==0)){ //确定按键完全按下 if(GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2)==0) //当灯都亮起时,GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2)读到输出数据; GPIO_SetBits(GPIOD,GPIO_Pin_2); //
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved