历史上的今天
返回首页

历史上的今天

今天是:2024年09月09日(星期一)

正在发生

2021年09月09日 | s3c2440学习之路-002 C语言点亮led

2021-09-09 来源:eefocus

硬件平台:jz2440

软件平台:Ubuntu16.04 arm-linux-gcc-3.4.5

源码位置: https://github.com/lian494362816/C/tree/master/2440/003_led_c


1 主要流程

承接上一篇博客 https://blog.csdn.net/lian494362816/article/details/84309342, 原理分析就略过,流程也很简单:

1)设置栈

2)跳到C语言

3)将GPF4配置成输出模式

4)将GPF4输出低电平,即可点亮LED1


2 源码

start.s


.global _start

_start:


    ldr sp, =4096 /* for nand */

    /*ldr sp, =0x40000000 + 4096  /* for nor */

    bl main


loop:

    b loop


汇编代码很简单,设置完了栈之后就直接跳到了C源的main函数


led_on.c


int  main()

{

    unsigned int *pGPF4CON = (unsigned int *)0x56000050;

    unsigned int *pGPFDAT = (unsigned int *)0x56000054;


    *pGPF4CON = 0x100;

    *pGPFDAT = 0x0;


    return 0;

}


C代码也很简单,将地址强制转换成了指针,再对指针进行赋值


3 SP(stack pointer)的设置

这里要引出2个问题:


为什么要设置SP

SP的值如何设置


3.1 为什么要设置SP

当程序跳到C语言执行时,第一件事情就是保存现场,而保存现场就需要将数据压入到栈中。因此查看反汇编代码时,跳到main之后,开头就执行了 “stmdb sp!, {fp, ip, lr, pc}”指令,这里就用到了SP 。


led_on.dis

在这里插入图片描述

3.2 SP的值如何设置

SP的设置根据nand flash, nor flash这2种不同启动方式可以配置成2个值,nand flash 是4096, nor flash 是0x40000000 + 4096。

主要原因:

1)nand flash的数据无法直接读取,需要预先发送指令,所以当使用nand启动时,2440会把nand 前4K的数据拷贝到内部的SRAM里面,这样程序是从在内部的SRAM里面读取指令。因为程序是从0地址开始拷贝,SP设置成4906(4K),SP的数值又是往下减的,所以保证SP不会踩到程序。


2)nor flash是跟CPU统一编址, CPU可以直接从nor flash读取数据(写数据需要预先发送命令)。当使用nor flash启动时,程序是直接从nor flash读取指令,根据2440的手册,此时SRAM的起始地址为0x40000000, 所以把SP的值设置为0x40000000 + 4096。


如果写了一个简单的流水灯程序会发现一个问题,程序烧到nand flash上运行的速度比nor flash要快,原因就是一个是在内部的SRAM读取指令, 另一个是在外部的nor flash读取指令。

在这里插入图片描述

推荐阅读

史海拾趣

Greenray Industries Inc公司的发展小趣事

随着数据中心的能耗问题日益突出,GreenTech敏锐地捕捉到了这一市场机遇。公司研发了一套绿色数据中心解决方案,包括高效能服务器、智能温控系统和可再生能源供电系统等。这些创新技术有效降低了数据中心的能耗和碳排放,为云计算和大数据产业的绿色发展提供了有力支持。GreenTech的解决方案得到了多家互联网巨头的认可,并成功应用于多个大型数据中心项目。

B&F Fastener Supply公司的发展小趣事

为了进一步完善电子供应链,B&F Fastener Supply公司积极寻求并购机会。经过多轮谈判和尽职调查,公司成功收购了某家专注于电子元器件供应的公司。这次并购使得B&F的产品线更加丰富,能够为客户提供一站式的电子供应链解决方案。

DESIGNERSYSTEMS公司的发展小趣事

DESIGNERSYSTEMS公司的创始人在电子行业有着深厚的背景和独特的见解。他们发现市场上缺乏一种能够集成多种功能、高度定制化的电子设备设计解决方案。于是,他们创立了DESIGNERSYSTEMS,专注于提供从概念到原型再到量产的全方位设计服务。通过不断的技术创新和对市场需求的精准把握,DESIGNERSYSTEMS迅速在电子行业树立了自己的品牌形象,赢得了客户的信赖。

Anatech Electronics Inc公司的发展小趣事

随着科技的快速发展,电子设备的设计要求越来越高。DESIGNERSYSTEMS公司投入大量研发资源,不断推动技术突破。他们成功开发出一套高效、智能的设计软件,能够大大提高设计效率和精度。这一技术突破使得DESIGNERSYSTEMS在电子设备设计领域具备了更强的竞争力,吸引了更多客户的合作。

亿佰特(EBYTE)公司的发展小趣事

亿佰特始终坚持以质量为核心的发展理念。公司建立了严格的质量控制体系,从原材料采购到生产制造,再到产品检验,每一个环节都严格把关。通过精细化的管理,亿佰特确保了产品的优良品质。同时,公司还注重售后服务,为客户提供全方位的支持。正是凭借卓越的品质和优质的服务,亿佰特赢得了客户的信赖和市场的认可。

Ecera Comtek Corp公司的发展小趣事

随着公司实力的不断增强,Ecera Comtek Corp公司开始寻求更广阔的发展空间。公司决定进军国际市场,拓展海外业务。然而,国际市场的竞争更加激烈,Ecera Comtek Corp公司面临着来自全球各地的强大竞争对手。为了应对这一挑战,Ecera Comtek Corp公司加强了与国际合作伙伴的联系,共同研发新产品,开拓新市场。同时,公司还加大了对海外市场的宣传力度,提高了品牌的知名度和美誉度。经过几年的努力,Ecera Comtek Corp公司的产品逐渐在国际市场上获得了认可,海外业务也取得了显著的进展。

问答坊 | AI 解惑

2008第四届国际印度电子部件展览会

2008第四届国际印度电子部件展览会 ELOMP INDIA 2008 时间:2008年9月10-12日 展馆:7 ABC, D, E & FGH 地址:Pragati Maidan Exhibition Center, New Delhi, INDIA 展品内容: 视频及其电脑周边通讯设备/电子五金/半导体/连接器/无源元件 ...…

查看全部问答>

快捷方式

这是CCS里面咱们最常用的。。。。…

查看全部问答>

混频器(分频器,信频器或滤波器)有哪些设计方法?

混频器(分频器,信频器或滤波器)有哪些设计方法?简述各类混频器的设计方法和步骤…

查看全部问答>

高性价比的安防系统语音方案

高性价比的安防系统语音方案 关键词:安防系统   WT588D  HT9200A  DTMF 安防系统以搭建组织机构内的安全防范管理平台为目的,利用综合布线技术、通信技术、网络互联技术、多媒体应用技术、安全防范技术、网络安 ...…

查看全部问答>

从零开始

对于单片机还没有玩好的我来说已经开始工作了,到了工作单位才知道,现在单片机就像一个小孩子的玩具一样,根本不能算是一项技能,靠他吃饭,简直就是天方夜谭。也许你要问,什么能让生在一个压力强大的社会里混口饭吃,作为电子类专业出身的我们, ...…

查看全部问答>

研讨会中奖礼品价值$750的仿真板 AT91SAM9M10-G45-EK 低价转让

本人代表公司参加ARM公司在今年7月份的全中国巡回研讨会时,有幸抽中了其合作伙伴ATMEL公司的仿真板(AT91SAM9M10-G45-EK)及其配套元件,价值750美金左右,因本人暂时不需要此板进行开发,现低价出售,包装完好,中奖时间为2010-7-23,是该公司最新 ...…

查看全部问答>

开启PB5.0出错unable to initialize the catalog

最近我在acer笔记本上面安装了PB5.0。安装完成以后,一打开就跳出unable to initialize the catalog的错误对话框。然后再PB的主界面打开manager catalog item,里面什么都没有。也不能创建工程。 请问各位大侠,有没有遇到此问题的?谢谢 …

查看全部问答>

深圳地区承接与fpga相关的项目

本从现在有大量的空闲时间,现在承接与fpga相关的项目,欢迎有相关项目外包的人与我联系QQ:774615731,email:szfpga@gmail.com 项 目 经 验   2008/7--2009/2:国标地面数字电视(DMB-TH)调制器    软件环境: window xp ...…

查看全部问答>

学习51单片机的准备?

我想自学单片机,在网上看了下,都说不推荐买开发板,最好自己做,请问有什么教程或者书是从组建最小系统开始讲的? 还有要买些什么元件?我们学校这里不知道哪有电子市场,所以打算在网上一次买齐,求教需要哪些元件,还有数量。…

查看全部问答>

编程器问题

请问有没有这种编程器,能编程象51系列,AVR系列,PIC系列等单片机的编程器,也就是这个编程器能对51编程,同时也能对AVR和PIC编程。…

查看全部问答>