mini2440烧写裸机程序(linux+supervivi+dnw)

发布者:DreamyEclipse最新更新时间:2022-05-17 来源: eefocus关键字:mini2440  烧写裸机程序  linux  supervivi  dnw 手机看文章 扫描二维码
随时随地手机看文章

一、编写源程序(init.S、testledC.lds、testledC.c、Makefile)


@******************************************************************************

@ File:init.S

@ 功能:通过它转入C程序

@******************************************************************************      


.text

.global _start

_start:

            ldr     r0, =0x53000000     @ WATCHDOG寄存器地址

            mov     r1, #0x0                    

            str     r1, [r0]            @ 写入0,禁止WATCHDOG,否则CPU会不断重启

           

            ldr     sp, =1024*4      @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K

                                             @ nand flash中的代码在复位后会移到内部ram中,此ram只有4K

            bl      main                @ 调用C程序中的main函数

halt_loop:

            b       halt_loop


/***********************************


*功能:链接文件TestledC.lds


*************************************/

SECTIONS {

 . = 0x00;

   .text          :   { *(.text) }

 .rodata ALIGN(4) : {*(.rodata)}

   .data ALIGN(4) : { *(.data) }

   .bss ALIGN(4)  : { *(.bss)  *(COMMON) }

}

SECTIONS {

 . = 0x00;

   .text          :   { *(.text) }

 .rodata ALIGN(4) : {*(.rodata)}

   .data ALIGN(4) : { *(.data) }

   .bss ALIGN(4)  : { *(.bss)  *(COMMON) }

}


/**************************************


*编写testledC.c源程序


*************************************/


/*************************************************

* File: testledC.c

* funtion:stream light

* author:zhaochuang

* data: 2013.5.8

* vision 1.0

**************************************************/

#define rGPBCON  (*(volatile unsigned *)0x56000010)

#define rGPBDAT  (*(volatile unsigned *)0x56000014)

#define rGPBUP  (*(volatile unsigned *)0x56000018)


void msdelay(int time)

{

 volatile unsigned int i,j;

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

  for(j=0;j}


void GPIO_init()

{

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

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

 //rGPBCON = 0x15400;//0001 0101 0100 0000 0000

 rGPBUP = 0xff;


}


void ledtestC()

{

 volatile unsigned int i;

 while(1)

 {

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

  {

   rGPBDAT = 0x000;

   rGPBDAT |=(1<<(5+i));

   msdelay(5);


   rGPBDAT &=~(1<<(5+i));

   msdelay(5);

  }

 }

}

int main(int argc, char **argv)

{

 GPIO_init();

 ledtestC();

 return 0;

}

/*************************************************/

/*********************************************************************************************

* File: int_test.c

* Author: Hanson

* 嵌入式家园   www.embedclub.com

* 上海嵌入式家园-开发板商城   http://embedclub.taobao.com

* Desc: LED test using c code

* History: May 16th 2011

*  

*********************************************************************************************/


/*------------------------------------------------------------------------------------------*/

/*                                     include files                                     */

/*------------------------------------------------------------------------------------------


#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 U32 unsigned long


#define LED1_ON   ~(1<<5)

#define LED2_ON   ~(1<<6)

#define LED3_ON   ~(1<<7)

#define LED4_ON   ~(1<<8)


#define LED1_OFF   (1<<5)

#define LED2_OFF   (1<<6)

#define LED3_OFF   (1<<7)

#define LED4_OFF   (1<<8)


void dely(U32 tt)

{

   U32 i;

   for(;tt>0;tt--)

   {

     for(i=0;i<10000;i++){}

   }

}


int main()

{


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

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


 rGPBDAT = rGPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);


 while (1)

 {

  rGPBDAT = rGPBDAT&(LED1_ON);

  dely(100);

  rGPBDAT = rGPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);

  dely(100);

  rGPBDAT = rGPBDAT&(LED2_ON);

  dely(100);

  rGPBDAT = rGPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);

  dely(100);

  rGPBDAT = rGPBDAT&(LED3_ON);

  dely(100);

  rGPBDAT = rGPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);

  dely(100);

  rGPBDAT = rGPBDAT&(LED4_ON);

  dely(100);

  rGPBDAT = rGPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);

  dely(100);

 }    

}

***********************************************************************/

/*********************************************************************************


*Makefile编写规则


***********************************************************************************/


CFLAGS  := -Wall -O2

testledC.bin : init.S testledC.c

 arm-linux-gcc $(CFLAGS) -c -o init.o init.S

 arm-linux-gcc $(CFLAGS) -c -o testledC.o testledC.c

 arm-linux-ld -TtestledC.lds  init.o testledC.o -o testledC_elf

 arm-linux-objcopy -O binary -S testledC_elf testledC.bin

 arm-linux-objdump -D -m arm  testledC_elf > testledC.dis

clean:

 rm -f   testledC.bin testledC_elf testledC.dis *.o

二、使用在lunux下make,生成可执行文件testled.bin


 


三、下载testledC.bin到开发板中


1、使用supervivi 下载,打到NOR命令行,-v


2、使用DNW下载二进制testledC.bin文件到开发板中


3、拨到Nand flash 下,重启开发板即可

关键字:mini2440  烧写裸机程序  linux  supervivi  dnw 引用地址:mini2440烧写裸机程序(linux+supervivi+dnw)

上一篇:mini2440裸机程序LED
下一篇:mni2440烧写裸机程序(Uboot下载)

推荐阅读最新更新时间:2024-11-12 15:17

Linux(ARM)下修改shell提示符
1): 创建全局变量文件: /etc/profile 添加如下内容: PS1='Andy--#' export PS1 注意:/etc/profile定义的变量是全局的,即对所有登录的Linux用户都有效。而在普通脚本里eport只在当前脚本以及子进程里有 效。 2): 使/etc/profile 生效 source /etc/profile 可以立即生效。 而要想让系统启动自动生效,需要启动一个登录shell,当然也有另一个方法: 用busybox里的ash作为shell时,如果直接在串口通过/bin/sh或者/bin/ash打开终端,而不登陆的话。常常遇到
[单片机]
Linux Kernel之flush_cache_all在ARM平台下是如何实现的
在驱动程序的设计中,我们可能会用到flush_cache_all将ARM cache的内容刷新到RAM,这是因为ARM Linux中cache一般会被设定为write back的。而通常象DMA是访问不了cache,所以如果我们需要启动DMA将RAM中的内容写到Flash中或LCD framebuffer,那么我们就需要调用flush_cache_all将cache中最新的内容刷新到RAM中。如果不这样做在LCD中可能会出现花屏。本文主要分析在ARM平台上到底如何实现的。 1.1 flush_cache_all在ARM Linux中的实现 在include/asm-arm/cacheflush.h中: #def
[单片机]
linux设备树-按键中断驱动
---------------------------------------------------------------------------------------------------------------------------- 内核版本:linux 5.2.8 根文件系统:busybox 1.25.0 u-boot:2016.05 ---------------------------------------------------------------------------------------------------------------------------- 回到顶部 一、修改设备树
[单片机]
ARM-Linux s3c2440 之UART分析(五)
从上面四篇介绍文章中,已经清楚了串口设备与串口驱动实现的各层次关系流程。是一种从上而下的关系,从第二篇的层次流程图中可以看出。之前说过串口设备是一种platform device,下面看看串口作为platform device的实现细节。 串口的硬件平台实现smdk2440_map_io()初始化入口: static void __init smdk2440_map_io(void) { s3c24xx_init_io(smdk2440_iodesc,ARRAY_SIZE(smdk2440_iodesc)); s3c24xx_init_clocks(12000000); s3c24xx_
[单片机]
玩转mini2440开发板之【如何通过vivi的命令行来启动nfs网络文件系统】
前文中说到如何开启了ubuntu 12.04的nfs网络文件系统,那么今天就接下去研究一下如何使用友善之臂的mini2440开发板来进行nfs网络文件系统的启动加载。 如前所述,已经在ubuntu上面配置好了nfs文件系统的目录和服务。我的nfs目录是/opt/FriendlyARM/mini2440/rootfs /mnt/nfs。 此时,根据mini2440的开发板操作手册,便可直接启动开发板,使用nand模式启动,接好电源、串口和网线,上电,便可看到开发板输出的调试信息: ##### FriendlyARM BIOS for 2440 ##### bon part 0 320k 2368k Download
[单片机]
OK6410A 开发板 (八) 12 linux-5.11 OK6410A start_kernel 打印角度 第一阶段 irq
irq 涉及的概念 1. 硬件A : 异常向量表 2. 硬件A : irq硬件流程及建议的软件流程 3. 硬件B : 芯片实现的中断控制器 数据手册 12 VECTORED INTERRUPT CONTROLLERS P409 4. 软件A : linux中断处理的软件流程(irq部分) 5. 软件B : linux中断处理的软件流程(中断控制器部分) 6. 软件C : linux中断处理的软件流程(irq_desc部分) 硬件 2个VIC(Vectored Interrupt Controller, ARM PrimeCell PL192) 2个TZIC(TrustZone Interrupt Controller,
[单片机]
基于S3C2440的嵌入式Linux根文件系统构建
嵌入式Linux早已成为IT界家喻户晓的一个名字,使用Linux进行嵌入式产品开发有一个很大的优势,就是开发资源丰富,且成本低廉,嵌入式Linux操作系统越来越受到重视,其应用也越来越广泛。而文件系统作为操作系统的重要组成部分,用于控制对数据文件及设备的存取,提供对文件和目录的分层组织形式,数据缓冲以及对文件存取权限的控制。根文件系统一直是Linux系统不可或缺的组件,在嵌入式Lin-ux中,内核在启动期间进行的最后操作之一就是安装根文件系统。Busybox是构建嵌入式Linux根文件系统的软件,用它制作根文件系统简单、方便,而且设置灵活。 1 根文件 Linux要在一个分区上存放系统启动所必需的文件,如内核映像文件、内核
[单片机]
基于S3C2440的嵌入式<font color='red'>Linux</font>根文件系统构建
linux内核中的文件描述符(三)--fd的回收
Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.csdn.net/ce123) 1.close函数 上图说明了close(fd)的执行过程,主要包括两部分:释放文件描述符fd,关闭文件file。 view plain copy print ? //fs/open.c asmlinkage long sys_close(unsigned int fd) { struct file * filp; struct files_struct *files = current- fi
[单片机]
<font color='red'>linux</font>内核中的文件描述符(三)--fd的回收
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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