Android学习笔记10&s3c2440学习系列10

本文介绍mini2440开发板的移植步骤,包括阅读S3C2440及mini2440原理图,解决bootloader中的match-type问题,并对比Android内核与主线Linux内核的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于mini2440的开发板的移植,第一步是要多读两遍S3C2440.pdf,以及mini2440原理图.pdf。

在移植设备驱动的时候,更要针对相应的spec来研究。

首先我们从bootloader开始,可以从我前段时间s3c2440学习系列。

开始看起:

在bootloader里面有一个match-type的问题

MACH_TYPE = 782
kernel  include/asm/mach-types.h
uboot   include/asm_arm/mach-types.h
          MACH_TYPE_MINI2440   782
vivi      include/platform/smdk2440.h  MACH_TYPE 782 

要全部对应起来

 



下面部分是copy网络上的介绍(转过来的)

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:Verdana; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:536871559 0 0 0 415 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

关于 Android 内核与主线 Linux 内核不同的地方,夜猫子大侠已经做了分析,分析的比较到位,现在拷贝在这里,标注红色的为与硬件相关的,标注蓝色的是硬件无关的,黑色的部分是笔者目前还不清楚的,有待研究:

    1 )基于 ARM 架构增加 Gold-Fish 平台 , 相应增加的目录如下 :

      kernel/arch/arm/mach-goldfish

      kernel/include/asm-arm/arch-goldfish

2 )增加了 yaffs2 FLASH 文件系统 , 相应增加的目录为 :

      kernel/fs/yaffs2

      实际上, Android 包经过编译后生成的 system.img ramdisk.img 文件就是 yaffs2 格式的包 .
   3.
增加了 Android 的相关 Driver, 相应目录为 :
      kernel/drivers/android  
     
主要分为 :
  
         Android IPC 系统 :       Binder (binder.c)
           Android
日志系统 :       Logger (logger.c)

           Android 电源管理 :       Power (power.c)

           Android 闹钟管理 :       Alarm  (alarm.c)
           Android 内存控制台 :     Ram_console (ram_console.c)
           Android 时钟控制的 gpio: Timed_gpio (timed_gpio.c)
   4.
增加了 switch 处理 , 相应的目录为 :

   kernel/drivers/switch/   
   5.
增加了一种新的共享内存处理方式 , 相应增加的文件为 :
     
kernel/mm/ashmem.c  
   6.  其他为 Linux-2.6.25 内核所做的补丁等等,例如 BlueTooth, 在此不做详细分析
  
另外 GoldFish 平台相关的驱动文件如下 :
   1.
字符输出设备 :
   
  kernel/drivers/char/goldfish_tty.c    
   2. 图象显示设备 : (Frame Buffer)
    
  kernel/drivers/video/goldfishfb.c 
   3. 键盘输入设备 :
     
kernel/drivers/input/keyboard/goldfish_events.c
   4. RTC 设备 : (Real Time Clock)
     
kernel/drivers/rtc/rtc-goldfish.c
   5. USB Device 设备 :
     
kernel/drivers/usb/gadget/android_adb.c

这里只要用了支持 Android ADB 工具,用于调试
   6. SD 卡设备 :
     
kernel/drivers/mmc/host/goldfish.c
   7. FLASH 设备 :
     
kernel/drivers/mtd/devices/goldfish_nand.c
      kernel/drivers/mtd/devices/goldfish_nand_reg.h 
   8. LED 设备 :
     
kernel/drivers/leds/ledtrig-sleep.c
   9. 电源设备 :
     
kernel/drivers/power/goldfish_battery.c
   10. 音频设备 :
     
  kernel/arch/arm/mach-goldfish/audio.c
   11. 电源管理 :
      
kernel/arch/arm/mach-goldfish/pm.c
   12. 时钟管理 :
     
  kernel/arch/arm/mach-goldfish/timer.c

"多谢关注realboard,请访问慧至科技官方网站www.hugacy.com" 感谢大家关注realboard,再三感谢,尤其是众多发email过来询问的网友。 鉴于有网友怀疑realboad速度比qemu慢,事实胜于雄辩,提供测试方法如下: 测试方法: 分别运行两个batch程序,用秒表或PC时钟计时(大概1分钟左右结束) 计时方法: 程序启动开始计时; 出现UI画面结束计时. 测试代码(rt-thread 0.4.0 relese): 如果对测试代码有疑问,请联系rt-thread咨询 bsp/mini2440/sdcard.c rt_uint8_t sd_init(void) { //-- SD controller & card initialize int i; sd_delay(1000000); //此处增加一行对ARM仿真性能进行压力测试 /* Important notice for MMC test condition */ /* Cmd & Data lines must be enabled by pull up resister */ SDIPRE = PCLK/(INICLK)-1; SDICON = (0<<4) | 1; // Type A, clk enable SDIFSTA = SDIFSTA | (1<<16); SDIBSIZE = 0x200; /* 512byte per one block */ SDIDTIMER=0x7fffff; /* timeout count */ /* Wait 74SDCLK for MMC card */ for(i=0; i<0x1000; i++); sd_cmd0(); 参考配置: Pentium(R) Dual-Core CPU E5400 @ 2.70GHz 2.69GHz, 3.46GB of RAM 参考结果: qemu为47秒, realboard为28秒 realboard之所有没有达到23秒以内,是因为Timer处理和外设IO还有专门优化。 早期曾经对realboard核心指令集模拟器做过多媒体解码测试,综合性能是qemu的2倍。 详情请参考我的优快云 blog realboard -- 继续挑战ARM高性能软件仿真极限 <** 任何个人或团体学习者,教育培训机构,自由项目开发组织,在非商业赢利前提下,均可以无偿体验和使用realboard,商业使用请联系作者获得授权, email : lxzhg@hotmail.com **> 测试包中所含其它资源为自由软件开发组织所有,请参考各自许可协议。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值