Walrus,Visit. | 一覧 | 検索 | 更新履歴(RSS) | 新規作成
はてなブックマークに追加 はてなブックマークを表示 編集 | 編集(管理者用) | 差分

Linuxザウルス開発メモ/ハードウェア

編集

ハードも好きにいじろう。

とりあえずSL-C700を分解してみました。

ページ作成: ヤマケン
Page created: YamaKen <yamaken at bp.iij4u.or.jp>

Use Excite_web_translation to translate this page into English. Sorry for inconvenience.

関連ページ

編集

SL-C700分解写真

基板全体

  • 方向揃えるの忘れてた…

SDスロット

  • 上部カバーに怪しげな穴が。
  • missing piece?

SL-C750分解写真

基板全体

SL-C700ハードウェア情報

シャープ本家の情報

CPU

  • Intel PXA250B2C400
Processor Type:  PXA250
Revision:        B2
Temp:            C (Commercial Temp)
Processor Speed: 400
    • SDカードへのアクセスはこれに内蔵のMMCコントローラで行われるが、データ線が1bitしかないので2.5MB/secしか出ない(SDのフルスペックは4bit)
    • Product_Breaf
    • ここから各種資料をダウンロード可能

メインメモリ(SDRAM)

  • Hynix HY5V26CLF-H
  • 54ball FBGA 0.8mm ball pitch

HY: HYNIX
5:  SDRAMs
V:  Vdd=3.3V
2:  128M
6:  x16
C:  C-Version (DIE GENERATION)
L:  LowPower
F:  FBGA
-H: PC133,CL3
    • 16bit*2チップ構成でPXA250との接続は32bit 100MHz CL3。接続クロックはこれが上限。廃人な方はCL2にしてみるのもよいかも
    • 空きランドは無し

フラッシュメモリ

  • TOSHIBA TC58512FT
  • 512Mbit (64M * 8bits)

    • アドレス/データ共用8bit接続。遅そう
    • いわゆるNANDフラッシュ。SmartMediaやxD-Picture Cardの中身と同じもの。

フラッシュメモリコントローラ

  • Xilinx CoolRunner?-II 2C64
    • 64 macrocell CPLD
    • ちゃんと確認していないがこれがNANDフラッシュコントローラと思われる
    • CPLDはComplex Programmable Logic Deviceの略。任意の回路を書き込める便利な石

P2ROM (Production Programmed ROM)

  • RH-IX0009YCZZQ
    • 64Mbit P2ROM
    • ちゃんと確認していないがブートローダ(やメンテナンスメニュー)用と思われる
    • 当初はフラッシュだと思っていたが、書換不能メモリだった。P2ROMについては紹介ページを参照
    • 横にTSOP用の空きランドがありフラッシュメモリ塔載に対応しているのかと思ったが、単にパッケージの違う石を載せられるようにしてあるだけかもしれない
      • TSOP48パッケージのP2ROMまたはNOR型フラッシュが載るようになっているように見える。P2ROMのデータシートで確認したところ、44SOP(C700に載っているもの)と48TSOP(空きランド)の対応する信号同士が結線されており、P2ROMではNCとなっているWE#, RST#から配線が引き出されている

ビデオコントローラ

ビデオメモリ

  • EtronTech? EM636165VE-7
  • 1M * 16bit 143MHz SDRAM, 60ball VFBGA

    • チップ表面の情報
    • EtronTech? EM636165VE-7 G380205RDP608.1

オーディオコーデック

  • wolfson microelectronics WM8731L
  • Low power audio codec with integrated headphone driver, 28pin QFN

アナログインタフェイス

  • MAX1111
  • 4ch * 8bit ADC, 16pin QSOP

圧電サウンダ

  • スピーカーの代わり。音はここから出るが、マグネティックスピーカー等に比べて低音質
  • 松下 M15EB
    • 資料見つからず

電源

  • Linear Technology LTC3440
  • DC-DCコンバータ。3.3Vを作っていると思われる。電池とCPUの間にある"LTNP"というマーキングのもの。

  • Linear Technology LTC1731
  • リチウムイオン電池充電制御IC。ATI W100のそばにある"LTKQ"というマーキングのもの。

SL-C750ハードウェア情報

シャープ本家の情報

システムブロック図(まだ)

CPU

  • Intel PXA255A0C400
Processor Type:  PXA255
Revision:        A0
Temp:            C (Commercial Temp)
Processor Speed: 400
    • Product_Breaf
    • ここから各種資料をダウンロード可能

メインメモリ(SDRAM)

  • SAMSUNG K4S561633C-RL75
54balls CSP 
3.0V & 3.3V power supply
4M x 16Bit x 4 Banks Synchronous DRAM
133MHz(CL=3)

SL-5500ハードウェア情報

CPU

  • Intel SA-1110 206MHz (StrongARM)

製品情報 ここから各種資料をダウンロード可能

メインメモリ(SDRAM)

  • SAMSUNG K4S561633C-RL75
  • 4M x 16Bit x 4 Banks Synchronous DRAM in 54CSP

フラッシュメモリ

  • SHARP LH28F640BFHE-PTTL90
  • 64Mbit (4M * 16bit), 48pin TSOP

    • SL-5500はこれ*2で32bit 16MB構成
    • 90ns/ページモード35ns

圧電サウンダ

  • 松下 M15EB
    • SL-C700と全く同じもの
    • 資料見つからず

各種メニュー

下記のように行うとDIAG MENUやService Menuを表示することができる。

元ネタはZaurus Forum http://externe.net/zaurus/forum の Hardware の P2ROM Contents, flashing and architecture? にあるがこのとおりにやらなくても表示できるかもしれない(英語が苦手なので手順がよくわからなかった)。

また、確認した機種はC750なので他の機種だと違うかもしれない。

DIAG MENU

1.電源をOFFにする

2.バッテリーとAC電源を取り外す

3.バッテリーは取り外したままで、DキーとPキーを押しながらAC電源をつなぐ

4.キーを離すとDIAG MENUが表示される。

  • DIAG MENU(1/3)
    • COM ADJ setting
    • LCD Phase Setting
    • Touch Panel
    • LCD+LED
    • SD card
    • Keyboard
    • Sound
    • USB Test
    • CF Update
  • DIAG MENU(2/3)
    • IrDA Checker
    • Idle Mode
    • Compact Flash
    • IrDA
    • Low Battery
    • Batt Voltage Adjust
    • NAND Flash (SUM)
    • 16pin
    • Remocon
    • Charge
    • Show Serial No
  • DIAG MENU(3/3)
    • LCD Check 2
    • Remote Diag Start
    • EXTRA MENU
    • ROM (SUM)
    • RAM (Full)
    • NAND Bad Count+Sum

SERVICE MENU

危険:EXTRA MENUのZaurus TestのNAND Flash(Full)を実行すると、内蔵Flashに書かれている全てのデータが上書きされるので、Zaurusが今後使用できなくなります。

その他のNAND関係のコマンドを実行すると内蔵Flashにテスト用のデータを書き込む、あるいはFlash消去を行うかもしれないので実行しないでください。

1.電源をOFFにする

2.バッテリーとAC電源を取り外す

3.バッテリーは取り外したままで、DキーとMキーを押しながらAC電源をつなぐ

4.キーを離すとSERVICE MENUが表示される。

  • Service(1/3)
    • COM ADJ setting
    • LCD Phase Setting
    • Touch Panel
    • LCD+LED
    • IrDA
    • Keyboard
    • Sound
    • NAND Flash (SUM)
    • CF Update
  • Service(2/3)
    • IrDA Checker
    • Compact Flash
    • SD card
    • Low Battery
    • Batt Voltage Adjust
    • USB test
    • 16pin
    • Remocon
    • Charge
    • Show Serial No
  • Service(3/3)
    • NAND Flash Back Up
    • NAND Bad Count
    • EXTRA Menu
    • ROM(SUM)
    • RAM(Full)
    • NAND Flash Restore
    • NAND Bad Count+Sum

各機種共通資料

CPU

カーネルから読み取れる情報

各種定義

機種 コード名 USBD_SERIAL_PRODUCT IDUSBD_NET_PRODUCTID
SL-5000D COLLIE 0x80020x8003
SL-5500 COLLIE 0x80020x8003
SL-A300 DISCOVERY 0x80050x8005
SL-B500 POODLE 0x80060x8006
SL-5600 POODLE 0x80060x8006
SL-C700 CORGI 0x80070x8007
SL-C750 SHEPHERD 0x90310x9031
SL-7500 SHEPHERD 0x90310x9031
SL-C760 HUSKY 0x90310x9031

C700 ROM1.00カーネルとC750 ROM1.10カーネルの差分

  • diffは約8000行
  • 新規追加ファイル
    • linux-c750-20030620-rom1_10/arch/arm/def-configs/husky
    • linux-c750-20030620-rom1_10/arch/arm/def-configs/husky-j
    • linux-c750-20030620-rom1_10/arch/arm/def-configs/shepherd
    • linux-c750-20030620-rom1_10/arch/arm/def-configs/shepherd-j
    • linux-c750-20030620-rom1_00/drivers/video/shepherdLogoMsg?.c
    • linux-c750-20030620-rom1_00/drivers/video/shepherdLogoMsg?J.c
  • Fast Context Switch Extention
    • linux-c750-20030620-rom1_10/arch/arm/config.in
dep_bool 'Enable Fast Context Switch Extention' CONFIG_ARM_FCSE $CONFIG_CPU_32
    • XScaleのPIDレジスタを使うように変更されている。XScaleのキャッシュは仮想アドレスをタグに持つのでそのままでは共有メモリのキャッシュがうまく効かないが、XScaleに内蔵されたPIDレジスタを使うとこれを回避できる…はず
+ *  04-Apr-2003 Sharp for ARM FCSE
    • linux-c750-20030620-rom1_10/arch/arm/kernel/process.c
    • linux-c750-20030620-rom1_10/arch/arm/mm/mm-armv.c
    • linux-c750-20030620-rom1_10/fs/exec.c
    • linux-c750-20030620-rom1_10/fs/proc/array.c
    • linux-c750-20030620-rom1_10/include/asm-arm/arch-pxa/memory.h
+#ifdef CONFIG_ARM_FCSE
+#define TASK_SIZE     ((current->mm->context.cpu_pid > CPU_PID_SPECIAL) ? (CPU_PID_SIZE) : (0xc0000000UL))
+#else
 #define TASK_SIZE	(0xc0000000UL)
+#endif
    • linux-c750-20030620-rom1_10/include/asm-arm/mmu.h
 /* The ARM doesn't have a mmu context */
+#ifdef CONFIG_ARM_FCSE
+typedef struct {
+	int cpu_pid;
+} mm_context_t;
+#else
 typedef struct { } mm_context_t;
+#endif
    • linux-c750-20030620-rom1_10/include/asm-arm/mmu_context.h
    • linux-c750-20030620-rom1_10/include/asm-arm/pgtable.h
    • linux-c750-20030620-rom1_10/include/asm-arm/proc-armv/cache.h
    • もっと沢山のファイルに手が入っているがキリがないのでやめ。開発に携わった方々、お疲れさまでした
  • drivers/mtd/nandに色々手が入っている。単純に大容量対応だけではない
  • シリアル周りに色々手が入っている
  • linux-c750-20030620-rom1_10/arch/arm/mach-pxa/corgi.c
    • SDRAM容量の設定は機種別のifdefハードコーディング。もう少しきれいになっているのを期待してたので残念
static void __init
fixup_corgi(struct machine_desc *desc, struct param_struct *params,
		char **cmdline, struct meminfo *mi)
{
#if defined(CONFIG_ARCH_PXA_SHEPHERD)
	SET_BANK (0, 0xa0000000, 64*1024*1024);
#else
	SET_BANK (0, 0xa0000000, 32*1024*1024);
#endif

#if defined(CONFIG_ARCH_PXA_SHEPHERD)
MACHINE_START(CORGI, "SHARP Shepherd")
#else
MACHINE_START(CORGI, "SHARP Corgi")
#endif
  • linux-c750-20030620-rom1_10/arch/arm/mach-pxa/sharpsl_apm.c
    • ヤマケン的に気になった箇所のみ切り出し。後で要確認
+ *	16-Jan-2003 SHARP sleep_on -> interruptible_sleep_on
+ *	13-Mar-2003 SHARP for PXA255
+#if defined(CONFIG_ARCH_PXA_SHEPHERD)
+		if ( cccr_reg == 0x161 ) {
+			cpu_xscale_sl_change_speed_161();
+		}
+		else if ( cccr_reg == 0x145 ) {
+			cpu_xscale_sl_change_speed_145();
+		} else {
+			cpu_xscale_change_speed_241();
+		}
+#else
 		signed long passcount;
 		int i = 0;
 		passcount = OSCR - OSMR0;
-		if (passcount >= 0) {
+		if ((passcount >= 0) || ( ( idletick != 0) && (passcount < -(idletick+1) * LATCH)) ) {
 			// timer irq has occured
 			(*(unsigned long *)&jiffies)+=idletick;
 			if ((OSSR & OSSR_M0) == 0) {
-			while ((unsigned long)(OSMR0 - OSCR) < 0) {
+			while (((signed long)(OSMR0 - OSCR)) < 0) {
+#if defined(CONFIG_ARCH_PXA_SHEPHERD)
+		sharpsl_restart_nonstop();
+#else
 		sharpsl_restart();
+#endif
-      sleep_on(&fl_key);
+      interruptiblee_sleep_on(&fl_key);
 #if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
+#if defined(CONFIG_ARCH_PXA_SHEPHERD)
+	sharpsl_chg_freq = (unsigned int)0x00000161;
+	cpu_xscale_sl_change_speed_161();
+#else
 #if 1	// default 400MHz
 	sharpsl_chg_freq = (unsigned int)0x00000241;
 #else
 	cpu_xscale_sl_change_speed_145_without_lcd();
+#endif
 #endif
  • linux-c750-20030620-rom1_10/arch/arm/mach-pxa/sharpsl_power.c
    • 以下の他にもバッテリ周りで色々手が入っている。電池蓋ロックスイッチ関連?
+ *	16-Jan-2003 SHARP sleep_on -> interruptible_sleep_on
+ *	09-Apr-2003 SHARP for Shaphard (software reset)
+#if defined(CONFIG_ARCH_PXA_SHEPHERD)
+	  case 0x161:
+	    if ( CCCR == 0x0161 ) break;
+		cpu_xscale_sl_change_speed_161();
+	    cccr_reg = CCCR;
+	    break;
+#endif
+#if defined(CONFIG_ARCH_PXA_SHEPHERD)
+	else if ( sharpsl_chg_freq == 0x0161 ) {
+	  cpu_xscale_sl_change_speed_161();
+	}
+#endif
  • linux-c750-20030620-rom1_10/arch/arm/mach-pxa/sharpsl_suspend.S
+ *	14-Mar-2003 Sharp for PXA255
+#if defined(CONFIG_ARCH_PXA_SHEPHERD)
+
+ENTRY(cpu_xscale_sl_change_speed_161)
+ 	stmfd	sp!, {r0, r1, r2, r3, r4, lr}
+
+ 	ldr		r0, CMR_BASE
+	ldr		r1, =0x161
+ 	str		r1, [r0, #CMR_CCCR]
+
+ 	ldr		r0, MD_BASE
+	ldr		r2, [r0, #MD_MDREFR]
+
+ 	bl		CodeOnCache_161
+ 
+ 	.align 5
+ 	.text
+CodeOnCache_161:
+	mov		r1, #0x2
+ 	mcr		p14, 0, r1, c6, c0, 0
+ 	str		r2, [r0, #MD_MDREFR]
+	ldr		r2, [r0, #MD_MDREFR]
+
+	ldmfd	sp!, {r0, r1, r2, r3, r4, pc}
+ 		
+ 	.align 5
+ 	.text
+
+#endif
  • linux-c750-20030620-rom1_10/arch/arm/mm/proc-xscale.S
    • enable non-cached bufferable page
+ *	16-Jan-2003 SHARP enable non-cached bufferable page
+ *	20-Mar-2003 SHARP supported PXA255
+ *	04-Apr-2003 Sharp for ARM FCSE
+#ifdef CONFIG_ARM_FCSE
+	.align  5
+ENTRY(cpu_xscale_set_pgd_without_invalidation)
+	mcr	p15, 0, r0, c2, c0, 0		@ load page table pointer
+	cpwait_ret lr, ip
+
+	.align	5
+ENTRY(cpu_write_pid_register)
+	mov	r0, r0, lsl #25
+	mcr	p15, 0, r0, c13, c0, 0
+	cpwait_ret lr, ip
+#endif
 #if CACHE_WRITE_THROUGH
-	bic	r2, r2, #L_PTE_BUFFERABLE
+	tst	r1, #L_PTE_CACHEABLE
+	bicne	r2, r2, #L_PTE_BUFFERABLE	@ clear B only if C is set
 #else
 	.type	cpu_arch_name, #object
 cpu_arch_name:
-	.asciz	"armv5"
+	.asciz	"armv5te"
 	.size	cpu_arch_name, . - cpu_arch_name
  • linux-c750-20030620-rom1_10/drivers/char/cotulla-rtc.c
static int rtc_ioctl(struct inode *inode, struct file *file,
		     unsigned int cmd, unsigned long arg)
{
...
 	case RTC_ALM_SET:
+#ifdef CONFIG_ARCH_SHARP_SL
+	{
+		struct rtc_time rtc_tm;
+		unsigned char mon, day, hrs, min, sec;
+		unsigned int yrs;
+
+		if (copy_from_user(&rtc_tm, (struct rtc_time*)arg,
+				sizeof(struct rtc_time)))
+			return -EFAULT;
+
+		yrs = rtc_tm.tm_year + 1900;
+		mon = rtc_tm.tm_mon + 1;   /* tm_mon starts at zero */
+		day = rtc_tm.tm_mday;
+		hrs = rtc_tm.tm_hour;
+		min = rtc_tm.tm_min;
+		sec = rtc_tm.tm_sec;
+
+		if ((yrs < 1970) || (yrs > 2037)) 
+			return -EINVAL;
+		if ((mon > 12) || (day == 0))
+			return -EINVAL;
+		if (day > (days_in_mo[mon-1] + ((mon == 2) && is_leap(yrs))))
+			return -EINVAL;
+		if ((hrs >= 24) || (min >= 60) || (sec >= 60))
+			return -EINVAL;
+
+		RTAR = mktime(yrs, mon, day, hrs, min, sec);
+
+		return 0;
+	}
+#else	
		if (copy_from_user (&tm2, (struct rtc_time*)arg, sizeof (tm2)))
			return -EFAULT;
		decodetime (RCNR, &tm);
		if ((unsigned)tm2.tm_hour < 24)
			tm.tm_hour = tm2.tm_hour;
		if ((unsigned)tm2.tm_min < 60)
			tm.tm_min = tm2.tm_min;
		if ((unsigned)tm2.tm_sec < 60)
			tm.tm_sec = tm2.tm_sec;
		RTAR = mktime (	tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
				tm.tm_hour, tm.tm_min, tm.tm_sec);
		return 0;
#endif
  • linux-c750-20030620-rom1_10/drivers/video/corgi_backlight.c
    • バックライト調節段階の追加
+ *   01-Apr-2003 Sharp   for SL-C750
+#ifdef CONFIG_ARCH_PXA_SHEPHERD
+static duty_vr_t corgibl_duty_table[CORGI_LIGHT_SETTING] = {
+	{0x00, 0},	//   0%		Light Off
+	{0x01, 0},	//  20%		Dim 1
+	{0x05, 0},	//  40%		2
+	{0x0b, 0},	//  70%		3
+	{0x05, 1},	//  40%		4
+	{0x0b, 1},	//  70%		5
+	{0x1f, 1}	// 100%		6
+};
+#else
 static duty_vr_t corgibl_duty_table[CORGI_LIGHT_SETTING] = {
 	{0x00, 0},	//   0%		Light Off
 	{0x01, 0},	//  20%		Dim
 	{0x02, 0},	//  25%		1
 	{0x0b, 0},	//  70%		2
 	{0x05, 1},	//  40%		3
 	{0x0b, 1},	//  70%		4
 	{0x1f, 1}	// 100%		5
 };
+#endif
  • linux-c750-20030620-rom1_10/drivers/video/w100fb.c
    • 'VRAM image cache'とはなかなかそそるキーワード。無効にされているのは何か問題があったのか
+ *  28-02-2003 SHARP supported VRAM image cache for ver.1.3
+ *  19-03-2003 SHARP disabled VRAM image cache for ver.1.3
+ *  16-04-2003 SHARP for Shepherd
+//#define _IMAGE_CACHE_SUPPORT // for image cache on video memory
+#ifdef _IMAGE_CACHE_SUPPORT
+#define REMAPPED_FB_LEN   0x200000
+#else //_IMAGE_CACHE_SUPPORT
 #define REMAPPED_FB_LEN   0x15ffff
+#endif //_IMAGE_CACHE_SUPPORT
+#define W100FB_CONFIG_EX       0x57415202 /* WAL\02 */
+#ifdef _IMAGE_CACHE_SUPPORT // for image cache on video memory
+
+#define IMG_CACHE_MALLOC_SIZE 0x1000
+#define IMG_CACHE_OFFSET_VGA (0x97008)
+#define IMG_CACHE_TOTAL_SIZE_VGA (0x200000-0x4000-IMG_CACHE_OFFSET_VGA)
+#define IMG_CACHE_SKIP_MARK (0xffffffff)
+
+static u32 *save_img_cache_ptr=NULL;
+static u32 save_img_alloc_num=0;
+#define __PRINTK(arg...) //printk(arg)
+#undef __SUM //for debug
+
+static u32* save_image_cache(u32 *alloc_num);
+static int restore_image_cache(u32 *img_src,u32 alloc_num);
+static int cleanup_image_cache(u32 *img_src,u32 alloc_num);
+
+// defalut don't skip
+static int start_skip_save_image_no = (-1);
+static int end_skip_save_image_no = (-1);
+#endif //_IMAGE_CACHE_SUPPORT
  • linux-c750-20030620-rom1_10/fs/jffs2/build.c
    • なぜHUSKYだけ?
+#ifdef CONFIG_ARCH_PXA_HUSKY
+	c->blocks = consistent_alloc(GFP_KERNEL,
+				     sizeof(struct jffs2_eraseblock) * c->nr_blocks,
+				     &c->blocks_phys);
+#else
 	c->blocks = kmalloc(sizeof(struct jffs2_eraseblock) * c->nr_blocks, GFP_KERNEL);
+#endif
+#ifdef CONFIG_ARCH_PXA_HUSKY
+		consistent_free( c->blocks,
+				 sizeof(struct jffs2_eraseblock) * c->nr_blocks,
+				 c->blocks_phys );
+#else
 		kfree(c->blocks);
+#endif
    • linux-c750-20030620-rom1_10/fs/jffs2/fs.c
    • linux-c750-20030620-rom1_10/fs/jffs2/super-v24.c
    • linux-c750-20030620-rom1_10/fs/jffs2/super.c
  • linux-c750-20030620-rom1_10/fs/jffs2/nodelist.h
+ *     05-Dec-2002 SHARP  adjust REVERVED_BLOCKS values for storage-full
+ *     21-May-2003 SHARP modified JFFS2_RESERVED_BLOCKS_BAD
+#ifdef CONFIG_ARCH_PXA_HUSKY
+#define JFFS2_RESERVED_BLOCKS_BAD 80
+#else
 #define JFFS2_RESERVED_BLOCKS_BAD 24
+#endif

SL-C700詳細解析

/proc/cpuの情報

レジスタ設定を読み書きするカーネルモジュールが提供されている。

insmod /lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/arch/arm/mach-pxa/registers.o
cd /proc/cpu/registers
ls
cat HOGE
  • SDRAM設定
  • SDRAMとCPUの接続は32bit 100MHz(正確には99.53MHz) CL3。

cat CCCR
0x241
# Core Clock Configuration Register (CCCR)
# L: 00001 Multiplier = 27 (Memory Frequency is 99.53MHz from 3.6864 MHz crystal)
# M:    10 Multiplier = 2 (Run Mode Frequency is 2 times the Memory Frequency)
# N:   100 Multiplier = 2
#      Run Mode Frequency to Turbo Mode Frequency Multiplier Turbo
#      Mode Freq. = Run Mode Frequency * N
cat MDCNFG
0x01A81AA9
# SDRAM Configuration Register (MDCNFG)
# DE0: 1
# DE1: 0
# DWID0: 0
# DCAC0[1:0]: 01
# DRAC0[1:0]: 01
# DNB0: 1
# DTC0[1:0]: 10
#            tRP=3, CL=3, tRCD=3, tRAS=7, tRC=10 (単位: clk)
# DADDR0: 0
# DLATCH0: 1
# DSA1111_0: 1
# Reserved: 000

SL-C750詳細解析

/proc/cpuの情報

行い方はSL-C700詳細解析を参照

  • SDRAM設定
  • CCCRレジスタはPXA255 Processor Developer's Manual(3-35)参照。

cat CCCR
0x161
# Core Clock Configuration Register (CCCR)
# L(Bit4-0): 00001 Multiplier = 27 (Memory Frequency is 99.53MHz from 3.6864 MHz crystal)
# M(Bit6-5):    11 Multiplier = 3 (run mode frequency is 4 times the memory frequency)
# N(Bit9-7):   010 Multiplier = 1
#      Run Mode Frequency to Turbo Mode Frequency Multiplier Turbo
#      Mode Freq. = Run Mode Frequency * N

MDCNFGレジスタはPXA255 Processor Developer's Manual(6-8)参照。

cat MDCNFG
0x01A81AC9
# SDRAM Configuration Register (MDCNFG)
# DE0(Bit0): 1 SDRAM partition0 enabled
# DE1(Bit1): 0 SDRAM partition1 disabled
# DWID0(Bit2): 0 SDRAM data bus width for partition pair 0/1(32bit)
# DCAC0[1:0](Bit4-3): 01 Number of Column Address bits for partition pair 0/1(9 column address bits)
# DRAC0[1:0](Bit6-5): 10 SDRAM row address bit count for partition pair 0/1(13 row address bits)
# DNB0(Bit7): 1 Number of banks in lower partition pair(4 internal SDRAM banks)
# DTC0[1:0](Bit9-8): 10 Timing Category for SDRAM pair 0/1.
#            tRP=3, CL=3, tRCD=3, tRAS=7, tRC=10 (単位: clk)
# DADDR0(Bit10): 0 reserved
# DLATCH0(Bit11): 1 Return Data from SDRAM latching scheme for pair 0/1
#                   (Latch return data with return clock)
# DSA1111_0(Bit12): 1 Use SA1111 Addressing Muxing Mode for pair 0/1.
# Reserved(Bit15-13: 000

SL-C700はなぜ遅いか(ハードウェア編)

他のサイト

WANTED

コメント

写真貼り付けや情報追加は勝手にやっちゃってください。関連する規格の資料なんかも集約したいですね。


お名前: コメント: 更新

カーネルアップデート関係は、専用のページ「Linuxザウルス開発メモ/独自ビルドカーネル」を作成しました。カーネルアップデート関係のこれ以降の投稿は、専用ページの方へお願いいたします。また、このページに投稿されたカーネルアップデート関係の発言は、専用ページにもコピーしました。
いやな想像をすると、IntelはPXA250型番ではバグを直さず*********つもり
では? ************************するというのは有り得ると
思う。PDAの新機種が出るタイミングでバグを直して「新しいXScaleになったから速く
なった」と****すれば**********。