minis3c2440移植之uboot移植

发布者:asa1670最新更新时间:2015-11-18 来源: eefocus关键字:移植  uboot移植 手机看文章 扫描二维码
随时随地手机看文章
U-boot移植
(以下步骤适用于s3c2440开发板)
1、修改Makefile文件:
a.修改交叉编译宏(CROSS_COMPILE?=)修改为(CROSS_COMPILE?=arm-linux-);
    b.将._LIBS:后的两个变量交换位置(line289)
    c.添加tocore2440_config Make文件(line2997)
tocore2440_config: unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t tocore2440 tocore  s3c24x0
包含六个参数:$1. tocore2440 表示在include/configs/目录下必须包含tocore2440.h文件;$2. arm表示在主目录下包含lib_arm目录,在include/目录下包含asm_arm目录;$3.arm920t表示CPU型号,在cpu目录下包含arm920t目录;$4.tocore2440芯片型号;$5.厂商目录(if($5!=NULL),则在board目录下有$5/$4目录,else,则在board目录下有$4目录);$6. s3c24x0表示在include/asm_arm/包含arch_ s3c24x0目录;
d.以上部分表示在移植U-boot前首先要添加开发板自己的配置头文件,并在board目录下建立自己的开发板目录,修改s3c24x0(cpu/arm920t/s3c24x0,include/asm_arm/archs3c24x0)文件,改为支持2440开发板,修改过程如下:
1)      修改inperrupts.c文件,添加宏定义:#defined(CONFIG_S3C2440)( line36)。
2)      修改speed.c文件:a.添加宏定义:#defined (CONFIG_S3C2440) ( line33);b.在get_PLLCLK()函数中添加2440支持,具体修改方式如下:在return返回值前添加#if defined(CONFIG_S3C2440)
if (pllreg == MPLL)
return((CONFIG_SYS_CLK_FREQ * m * 2) / (p << s)); //得到2440开发板的频率
    else if (pllreg == UPLL)
#endif
c.将get_HCLK()函数修改为2440支持,将原函数返回改为:
    //该函数为读取当前系统时钟
#if defined(CONFIG_S3C2440)
   if (clk_power->CLKDIVN & 0x6)
    {
        if ((clk_power->CLKDIVN & 0x6)==2) return(get_FCLK()/2);
        if ((clk_power->CLKDIVN & 0x6)==6) return((clk_power->CAMDIVN & 0x100) ? get_FCLK()/6 : get_FCLK()/3);
        if ((clk_power->CLKDIVN & 0x6)==4) return((clk_power->CAMDIVN & 0x200) ? get_FCLK()/8 : get_FCLK()/4);
         return(get_FCLK());
    }
    else return(get_FCLK());
#else
    return((clk_power->CLKDIVN & 0x2) ? get_FCLK()/2 : get_FCLK());
#endif
d.修改time.c文件,添加宏定义#defined (CONFIG_S3C2440)(line33)
2、添加配置文件
    a.将smdk2410.h复制为tocore2440.h,其文件修改如下:
       1)添加宏#undef CONFIG_SKIP_LOWLEVEL_INIT    (line40)
2)注释2410宏定义:
//#define   CONFIG_S 3C2410      
//#define CONFIG_SBC2410X       
        3)添加2440宏定义:
#define CONFIG_S3C2440           
#define CONFIG_TOCORE2440             
#define CONFIG_TOCORE2440_LED     //添加点灯宏定义
#define CONFIG_S3C2440_NAND_BOOT  1 //Nandflash启动
4)注释CS8900网卡宏定义(在line72添加#if 0,在line76 添加#endif),添加DM9000网卡宏定义:
                  #define CONFIG_DRIVER_DM9000                  1
#define CONFIG_DM9000_USE_16BIT               1
#define CONFIG_DM9000_BASE     0x20000300
#define DM9000_IO              0x20000300
#define DM9000_DATA            0x20000304
#define CONFIG_DM9000_NO_SROM           1
#undef CONFIG_DM9000_DEBUG
#define CONFIG_NET_MULTI
       5)在命令行宏定义中添加如下宏定义:
#define CONFIG_CMD_ASKENV
#define CONFIG_CMD_DHCP
#define CONFIG_CMD_PING
#define CONFIG_CMD_NAND
#define CONFIG_CMD_SAVEENV
 
#define CONFIG_BOOTDELAY     //设置系统启动等待时间
#define CONFIG_BOOTARGS "console=ttySAC0 root=/dev/nfs "
                        "nfsroot=192.168.2.199:/fs "
                "ip=192.168.2.69:"  //NFS支持
#define CONFIG_ETHADDR  08:00:3e:26:0a:5b   //打开MAC
#define CONFIG_IPADDR       192.168.2.69    //定义自身IP
#define CONFIG_SERVERIP     192.168.2.105   //定义服务器IP
#define CONFIG_BOOTCOMMAND  "dhcp; bootm"   //打开DHCP
            //line154之后添加如下宏定义
#define CONFIG_SYS_PROMPT   "[tocore2440 ]# "   //修改启动标识
#define CONFIG_SYS_LOAD_ADDR    0x31000000      //下载地址
#define CONFIG_ENV_ADDR         0x060000        //断电保存地址
#define CONFIG_ENV_IS_IN_NAND 1                 //Nandflash
#define CONFIG_ENV_OFFSET       0X60000     //整个寄存器偏移地址
#define CONFIG_ENV_SIZE         0x20000     //ENV分区大小
#define MTDPARTS_DEFAULT "mtdparts=nandflash0:384k(bootloader),"
                         "128k(params),"
                         "5m(kernel),"
                         "-(root)"      //Nandflash默认设置
 
#define NAND_MAX_CHIPS 1    //Nandflash最大个数
#define CONFIG_MTD_NAND_VERIFY_WRITE    //校验
#if defined(CONFIG_TOCORE2440_LED)      //点灯宏定义
 
 
#define GPIO_CTL_BASE 0x56000000
#define oGPIO_B 0x10
#define oGPIO_CON 0x0
#define oGPIO_DAT 0x4
#define oGPIO_UP 0x8
#endif
#define STACK_BASE 0x33f00000
#define STACK_SIZE 0x10000
 
        6)对Nandflash的相关设置修改如下:
            添加LV800支持宏定义,注释掉如下宏定义
            //#define CONFIG_ENV_ADDR       (CONFIG_SYS_FLASH_BASE + 0x0F0000)
//#define CONFIG_ENV_ADDR       (CONFIG_SYS_FLASH_BASE + 0x070000)
//#define   CONFIG_ENV_IS_IN_FLASH  1
//#define CONFIG_ENV_SIZE       0x10000
添加Nandflash设置:
#if defined(CONFIG_CMD_NAND)
#define CONFIG_NAND_S3C2410
#define CONFIG_SYS_MAX_NAND_DEVICE  
#endif 
#define CONFIG_SETUP_MEMORY_TAGS
#define CONFIG_INITRD_TAG
#define CONFIG_CMDLINE_TAG
#define CONFIG_SYS_HUSH_PARSER
#define CONFIG_SYS_PROMPT_HUSH_PS2   "> "
#define CONFIG_CMDLINE_EDITING
#ifdef CONFIG_CMDLINE_EDITING
#undef CONFIG_AUTO_COMPLETE
#else
#define CONFIG_AUTO_COMPLETE
#endif
 
#define CONFIG_SYS_NAND_BASE 0x4E000000
#define NAND_CTL_BASE 0x4E000000
#define bINT_CTL(Nb) __REG(INT_CTL_BASE + (Nb))
 
 
#define oNFCONF 0x00
#if defined(CONFIG_S3C2440)
#define CONFIG_S3C2440_NAND_BOOT 1
 
#define oNFCONT 0x04
#define oNFCMD 0x08
#define oNFADDR 0x0c
#define oNFDATA 0x10
#define oNFSTAT 0x20
#define oNFECC 0x2c
#define rNFCONF (*(volatile unsigned int *)0x4e000000)
#define rNFCONT (*(volatile unsigned int *)0x4e000004)
#define rNFCMD (*(volatile unsigned char *)0x4e000008)
#define rNFADDR (*(volatile unsigned char *)0x4e00000c)
#define rNFDATA (*(volatile unsigned char *)0x4e000010)
#define rNFSTAT (*(volatile unsigned int *)0x4e000020)
#define rNFECC (*(volatile unsigned int *)0x4e00002c)
#endif
#if defined(CONFIG_S3C2410)
#define CONFIG_S3C2410_NAND_BOOT 1
 
#define oNFCONF 0x00
#define oNFCMD 0x04
#define oNFADDR 0x08
#define oNFDATA 0x0c
#define oNFSTAT 0x10
#define oNFECC 0x14
#define rNFCONF (*(volatile unsigned int *)0x4e000000)
#define rNFCMD (*(volatile unsigned char *)0x4e000004)
#define rNFADDR (*(volatile unsigned char *)0x4e000008)
#define rNFDATA (*(volatile unsigned char *)0x4e00000c)
#define rNFSTAT (*(volatile unsigned int *)0x4e000010)
#define rNFECC (*(volatile unsigned int *)0x4e000014)
#define rNFECC0 (*(volatile unsigned char *)0x4e000014)
#define rNFECC1 (*(volatile unsigned char *)0x4e000015)
#define rNFECC2 (*(volatile unsigned char *)0x4e000016)
#endif
至此tocore2440.h文件修改完毕
b.建立目录/board/tocore/tocore2440,将/board/samsung/smdk2440下的文件拷贝至/board/tocore/tocore2440下,拷贝nand_read.c(开发板自带)文件至该目录下。修改Makefile文件(line28)
COBJS   :=tocore2440.o nand_read.o  flash.o
c.修改lowlevel_init.S文件,添加如下支持2440代码:
        #if defined(CONFIG_S3C2440)
#define Trp            0x2    
#define REFCNT            1012
#else
#define Trp            0x0    
#define REFCNT                  0x0459
#endif
    d.修改tocore2440.c文件:
            在#elif FCLK_SPEED==1之后添加:
            #if defined(CONFIG_S3C2440)
            #define M_MDIV  0x7f
#define M_PDIV  0x2
#define M_SDIV  0x1
#endif
#endif
在#elif USB_CLOCK==1之后修改为:
//#define U_M_MDIV  0x48
//#define U_M_PDIV  0x3
 
#if defined(CONFIG_S3C2440)
#define U_M_MDIV 0x38
#define U_M_PDIV 0x2
#endif
修改board_init()函数:
将gpio->GPGCON的值改为 0xFF95FF3A;
将gpio->GPHCON 的值改为 0x0016FAAA
在gpio->GPHUP = 0x000007FF之后添加一下宏定义:
gpio->EXTINT0=0x22222222;
gpio->EXTINT1=0x22222222;
gpio->EXTINT2=0x22222222;
 
在dcache_enable()函数之后添加以下低昂等操作代码:
#if defined(CONFIG_TOCORE2440_LED)
      gpio->GPBDAT = 0x181;
#endif
 
在board_init()函数之后添加以下函数:
#ifdef CONFIG_DRIVER_DM9000
int board_eth_init(bd_t *bis)
{
  return dm9000_initialize(bis);
}
#endif
至此tocore2440.c文件修改完毕
        e.修改start.S文件:
            1)注释掉以下代码:
//bl coloured_LED_init
//bl red_LED_on
在#if defined (CONFIG_S3C2400) || defined (CONFIG_S3C2410)之后添加2440的支持:|| defined(CONFIG_S3C2440)
2)在line146之后添加对时钟设置代码:
#define CLK_CTL_BASE  0x4C000000
#define MDIV_405      0x7f<<12
#define PSDIV_405     0x21
#define MDIV_200      0xa1<<12
#define PSDIV_200     0x31
#endif
在line163之后添加工作频率设置汇编代码
#if defined(CONFIG_S3C2440)
 [page]
 
ldr  r0, =CLKDIVN
mov  r1,#5
str  r1,[r0]
 
mrc p15,0,r1,c1,c0,0
orr r1, r1,#0xc0000000
mcr p15,0,r1,c1,c0,0
 
mov r1,#CLK_CTL_BASE
mov r2,#MDIV_405
add r2,r2,#PSDIV_405
str r2,[r1,#0x4]
#else
在#endif    之后添加以下Nandflash设置代码:
#endif
#define LENGTH_UBOOT  0x60000
#define NAND_CTL_BASE  0x4E000000
#ifdef CONFIG_S3C2440_NAND_BOOT
 
    @reset NAND
//#define oNFCONF 0x00
//#define oNFCONT 0x04
//#define oNFSTAT 0x08
//#define oNFCMD 0x20
mov r1,#NAND_CTL_BASE
ldr r2,=( (7<<12)|(7<<8)|(7<<4)|(0<<0))
str r2,[r1,#oNFCONF]
ldr r2,[r1,#oNFCONF]
ldr r2,=((1<<4)|(0<<1)|(1<<0))
str r2,[r1,#oNFCONT]
ldr r2,[r1,#oNFCONT]
ldr r2,=(0x6)
str r2,[r1,#oNFSTAT]
ldr r2,[r1,#oNFSTAT]
mov r2,#0xff
strb r2,[r1,#oNFCMD]
mov r3,#0
nand1:
    add r3,r3,#0x1
    cmp r3,#0xa
    blt nand1
nand2:
    ldr r2,[r1,#oNFSTAT]
    tst r2,#0x4
    beq nand2
ldr r2,[r1,#oNFCONT]
    orr r2,r2,#0x2
    str r2,[r1,#oNFCONT]
    @get read to call C functions (for nand_read())
    ldr sp,DW_STACK_START
    mov fp,#0
@copy U-Boot to Ram
    ldr r0,=TEXT_BASE
    mov r1,#0x0
    mov r2, #LENGTH_UBOOT  //the u-boot¿s  lenth
    bl nand_read_ll
    tst r0,#0x0
    beq ok_nand_read
bad_nand_read:
loop2:    b loop2
ok_nand_read:
    @verify
    mov r0,#0
    ldr r1,=TEXT_BASE
    mov r2,#0x400
go_next:
    ldr r3,[r0],#4
    ldr r4,[r1],#4
    teq r3,r4
    bne notmatch
    subs r2,r2,#4
    beq stack_setup
    bne go_next
 
notmatch:
loop3:    b loop3 @CONFIG_S3C2440_NAND_BOOT
#endif
在对BSS段清零操作代码之后添加以点灯操作代码:
#if defined(CONFIG_TOCORE2440_LED)
   mov  r1, #GPIO_CTL_BASE
   add  r1, r1, #oGPIO_B
   ldr  r2,=0x156aa
   str  r2, [r1, #oGPIO_CON]
   mov  r2, #0xff
   str  r2, [r1, #oGPIO_UP]
   mov  r2, #0x1c0
   str  r2, [r1, #oGPIO_DAT]
#endif
在_start_armboot:  .word start_armboot跳转代码之后添加以下对堆栈段设置的代码:
#define STACK_BASE 0x33f00000
#define STACK_SIZE 0x10000
        .align  2
DW_STACK_START: .word   STACK_BASE+STACK_SIZE-4
至此start.S文件修改完毕,整个配置文件修改完成。
    3.在u-boot根目录下执行清理配置文件命令make distclean,并执行命令make tocore2440_config命令,完成对u-boot的配置,添加交叉编译工具环境变量:export PATH=/armtools/bin:$PATH(交叉编译工具解压在更目录下),再执行make命令,完成U-boot编译。
 
 
Linux内核编译步骤(支持S3C2440)
1.    修改Makefile文件:
修改arch宏定义:ARCH?=arm (line176)
修改CROSS_COMPILE为CROSS_COMPILE?=arm-linux- (line177)
2.执行命令cp arch/arm/configs/smdk2410_defconfig .config,完成对smdk2410配置信息的拷贝。执行命令make menuconfig命令,实现对.config文件的配置信息的设置。
3. 对.config配置方法如下:
   a.进入配置System Type  --->项:
选择S3C24XX Implementations  --->项,进入后选定SMDK2440项和其子项SMDK2440 with S3C2440 CPU module,推出到上级菜单,选定arm900T支持项Support ARM920T processor,至此完成对System Type项的设置。
    b.进入配置Floating point emulation  --->项:
进入后选定NWFPE math emulation和其子项Support extended precision,至此完成对Floating point emulation项的设置。
       c.进入配置Device Drivers  --->驱动项:
1)配置Memory Technology Devices (MTD)  --->项,进入选定Memory Technology Device (MTD) support项和MTD partitioning support项,并进入配置NAND Flash Device Drivers  --->项,进入后选定NAND Flash support for S3C2410/S3C2440 SoC项NAND Flash support for S3C2410/S3C2440 SoC和其子项S3C2410 NAND driver debug项,退出到Device Drivers二级菜单。
2)配置Block devices  --->项,进入后选定Loopback device support项,修改Default RAM disk size (kbytes)项的值为65535,退到上级菜单
3)配置Network device support  --->项,进入之后选定Network device support项,进入Ethernet (10 or 100Mbit)  --->项选择网DM9000支持项DM9000 support,退出到Device Drivers二级菜单
4)进入Character devices  --->项的子项Serial drivers  --->检查是否选定Samsung S3C2410/S3C2440/S3C2442/S3C2412 Serial port support和其子项Support for console on S3C2410 serial port,若未选定,则选定退出到主菜单。
d.配置File systems  --->项,进入之后选定Ext2 extended attributes项、Ext2 execute in place support、Ext3 journalling file system support项和ROM file system support项,进入Network File Systems  --->项,选定NFS file system support项,退出到主菜单
e.退出,保存。
    4.修改arch/arm/march_s3c2410/目录下的文件common-smdk.c文件:
       将struct mtd_partition smdk_default_nand_part[]修改为:
       static struct mtd_partition smdk_default_nand_part[] = {
        [0] = {
                .name   = "Kernel",
                .size   = SZ_2M,
                .offset = 0,
              },
        [1] = {
                .name   = "root partition",
                .offset = SZ_2M,
                .size   = (64*SZ_1M-2* SZ_1M),
              },
        [2] = {
                .name   = "other2",
                .offset = SZ_64M,
                .size   = (64*SZ_1M),
            },
        [3] = {
                .name   = "other3",
                .offset = SZ_128M,
                .size   = (64*SZ_1M),
               },
#if 0  
 
        [2] = {
                .name   = "S3C2410 flash partition 2",
                .offset = SZ_4M,
                .size   = SZ_4M,
              },
        [3] = {
                .name   = "S3C2410 flash partition 3",
                .offset = SZ_8M,
                .size   = SZ_2M,
              },
        [4] = {
                .name   = "S3C2410 flash partition 4",
                .offset = SZ_1M * 10,
                .size   = SZ_4M,
              },
        [5] = {
                .name   = "S3C2410 flash partition 5",
                .offset = SZ_1M * 14,
                .size   = SZ_1M * 10,
              },
        [6] = {
                .name   = "S3C2410 flash partition 6",
                .offset = SZ_1M * 24,
                .size   = SZ_1M * 24,
              },
        [7] = {
                .name   = "S3C2410 flash partition 7",
                .offset = SZ_1M * 48,
                .size   = SZ_16M,
              }
#endif
};
    5.修改arch/arm/march_s3c2410/目录下的march-smdk2410.c文件:
修改函数void __init smdk2440_map_io():将主频设置为12000000。 代码为s3c24xx_init_clocks(12000000);
    6.执行make clean清除命令,再执行make uImage命令,完成make命令之后将在arch/arm/boot目录下产生uImage文件。至此整个内核的修改和编译全部完成。

   

关键字:移植  uboot移植 引用地址:minis3c2440移植之uboot移植

上一篇:Bootloader/u-boot的启动模式
下一篇:s3c2440的LCD应用

推荐阅读最新更新时间:2024-03-16 14:40

Android平台移植应该做两步工作
    Android系统的移植工作的目的是为了在特定的硬件上运行Android系统。在移植的过程中,把握关键要点,减少工作量是一个重要的方面。从工作的角度,通常的方法为,首先要熟悉硬件抽象层的接口,其次要集成和复用已有的驱动程序,主要的工作量在硬件抽象层的实现中。为了更好地理解和调试系统,也应该适当地了解上层对硬件抽象层的调用情况。     移植方面主要的工作有两个部分:     Linux驱动     Android系统硬件抽象层     Linux中的驱动工作在内核空间,Android系统硬件抽象层工作在用户空间,有了这两个部分的结合,就可以让庞大的Android系统运行在特定的硬件平台上。     Androi
[嵌入式]
U-Boot移植(17)ylp2410网卡dm9000aep
3、在板里,为了验证现在新u-boot 是否可用需要先在u-boot 中设置ip地址,如下所示: 注意下面红色字 U-Boot 1.1.6 (Dec 5 2009 - 17:41:27) DRAM: 64 MB Flash: 0 kB NAND: 64 MiB In: serial Out: serial Err: serial UPLLVal MPLLVal CLKDIVN:3h +---------------------------------------------+ | S3C2440A USB Downloader ver R0.03 2004 Jan | +------------------------
[单片机]
μC/OS-II在ARM平台上移植的研究
  μC/OS-II在ARM平台的移植是一个重要的学习过程,有助于提高对RTOS的认识与理解,从而提高嵌入式工作者的理论与技术水平。μC/OS-II 是一个小的实时内核,源代码公开,有详尽的解释。正是因为其内核小,才便于研究、理解和掌握。另外,参照TCP/IP协议、标准和一些公开的图书,在μC /OS-II上增加TCP/IP协议栈,蓝牙通信软件、红外通信协议也十分方便,商业价值得到了认可。   随着科技的发展,嵌入式应用的复杂性越来越高,同时ARM体系处理器的价格越来越低,ARM平台 + 实时操作系统的架构体系的使用会越来越广泛。有鉴于此,本文对μC/OS-II在ARM平台下的移植进行了深入探讨。   1 操作系统μC/OS-
[单片机]
基于tiny4412的Linux内核移植(支持device tree)(三)
平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 (为支持uImage启动,做了少许改动) busybox版本:busybox 1.25 交叉编译工具链: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)) 注意 继续上文。 到目前为止,板子已经可以起来了,接下来就可以针对板子的情况移植驱动程序了。
[单片机]
51上移植ucosii的心得
  自嵌进式系统开发以来,很长时间都采用前后台系统软件设计模式:主程序为一个无穷循环,单任务顺序执行。通过设置一个或多个中断来处理异步事件。   这种系统对于简单的应用是可以的,但对于实时性要求比较高的、处理任务较多的应用,就会暴露出实时性差、系统可靠性低、稳定性差等缺点。    μC/OS-II 是一种基于优先级的抢占式多 任务实时操纵系统,包含了实时内核、任务治理、时间治理、任务间通讯同步(信号量,邮箱,消息队列)和内存治理等功能。它可以使各个任务独立工作,互不干 涉,很轻易实现准时而且无误执行,使实时应用程序的设计和扩展变得轻易,使应用程序的设计过程大为减化。而且它内核源代码公然,可移植性强,为编程职员提 供了很好的一
[单片机]
Exynos4412 内核移植(五)—— 驱动的移植
以移植自己制作的驱动,学习内核移植中的驱动移植,及 驱动程序的动态编译和静态编译 硬件环境: Linux 内核版本:Linux 3.14 主机:Ubuntu 12.04发行版 目标机:FS4412平台 交叉编译工具:arm-none-linux-gnueabi-gcc 一、静态编译 1、添加驱动文件 将写好的实验代码fs4412_led_drv.c 拷贝到 drivers/char 下 fs4412_led_drv.c 如下: #include linux/kernel.h #include linux/module.h #include linux/fs.h #include linux
[单片机]
Exynos4412 内核<font color='red'>移植</font>(五)—— 驱动的<font color='red'>移植</font>
alsa-lib及alsa-utils成功移植
准备工作 alsa-lib版本:alsa-lib-1.0.23.tar.bz2 alsa-util版本:alsa-utils-1.0.23.tar.bz2 其他版本的alsa-lib和alsa-util不能保证正常工作 arm板子:s3c2416 板子上linux内核:2.6.xx pc虚拟机:arm-linux-gcc:4.4.6 首先在Ubuntu上交叉、编译alsa-lib和alsa-util 1.解压alsa-lib-1.0.23.tar.bz2,进入解压所得目录 2.使用命令 ./configure --host=arm-jyxtec-linux-gnueabi --prefix=/usr/share/arm-als
[单片机]
μC/OS-II在LPC213X上的多种移植方案
μC/OS-II是可移植、适用于对安全性要求苛刻的剥夺型实时多任务嵌入式系统,简单易学,在工程应用和嵌入式系统教学中很受欢迎。LPC213X是Philips公司推出的基于ARM7TDMI-S核的32位RISC微处理器,也适合于ARM学习开发平台和工程应用。 1 与μC/OS-II移植工作相关的主要特性 ARM体系结构分为7种运行模式,ARM和Thumb两种工作状态。LPC213X的编程模型就是标准的ARM7体系结构;同时LPC213X也具备ARM的标准异常模式IRQ和FIQ。稍具特色的是其VIC向量中断控制器。分别对IRQ、FIQ、非向量中断和软件中断进行了分类,具有对32个中断输入的可编程分配机制。这对于μC/OS-II的移植
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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