steletoの日記 このページをアンテナに追加 RSSフィード

2010-11-30

[][] 進んではいる 02:24  進んではいるを含むブックマーク  進んではいるのブックマークコメント

zbsdmodのlinux 2.6.26用バイナリはできたが起動しないというところから。

日曜編。

  • とりあえずzbsdmodにprintf()ならぬprintk()を大量投入し、どこまで動作できているのか確認
  • NetBSDカーネルをメモリに配置している途中でフリーズしていることが判明、つまり原因はzbsdmod側
  • 何度か試すとどうも大体同じようなアドレスにコピーするとことで固まる
  • Linux側が使用中のメモリアドレスにぶち込んだから? と予想しモジュールを取っぱらって再挑戦
  • 目論見通りさっきまでフリーズを起こしていた付近のアドレスも無事にコピーされるように、ただししばらく進んだところで結局固まる
  • ところでNetBSDカーネルPA/VAがそれぞれ0xa0200000/0xc0200000と中途半端なアドレスなのはLinuxカーネル側との衝突を避けるため?
  • ただし元々C3000系の純正カーネルは2.4.20だから2.6.26相手だと不足になっているとか?
  • …じゃPA/VAを0xa0400000/0xc0400000にずらしてみよう
  • お、さらにコピーがすすんだ、けどまだ止まる
  • じゃあ再度モジュール全開放で
  • コピー完了できた!
  • でもなにも起きねぇ! NetBSD側に制御が移ったんならシリアルに反応くらいあってもよさそうなのになぁ

本日。

  • NetBSD側に制御が移っているか確認してみよう
  • 一番最初に実行されるのはstart_zaurus.Sみたいなので、ここにシリアル側へ落書きするコードを入れる
  • お、落書きがシリアルに出力された。ということはzbsdmodは正しく制御を移すことに成功しているわけだ
  • ということでNetBSD側のロジックを追いかけてみる
  • げ、initarm()がPA=0xa0200000前提のコードになってやがる orz

2010-11-29

むしゃくしゃしたのでやった(多摩川編) 03:02 むしゃくしゃしたのでやった(多摩川編)を含むブックマーク むしゃくしゃしたのでやった(多摩川編)のブックマークコメント

表題の通り、27日に何かと因縁?のある多摩川へ。元々いつかやろうかと漠然とは考えていたけど、やっぱり最終的には「むしゃくしゃしたので」半ば衝動的に突撃(笑)

なお今回は暗くなる前には到着したかったので道中ずっと急ぎ足。つーわけで写真もあまり撮ってなかった。

ちなみに経路は多摩川サイクリングロードのマップを参考にしております。

f:id:steleto:20101130020115j:image

とりあえず中央線。ここを南下してまずは支流である浅川へ。浅川へ着いたら右岸から多摩川に向かって下る。

f:id:steleto:20101130020112j:image

多摩川と合流してすぐにある橋を渡り府中市へ。ここからは左岸沿いに下る。

f:id:steleto:20101130020116j:image

紅葉シーズンは過ぎていたけど半分くらいは残ってた。

f:id:steleto:20101130020113j:imageBGM:妖精乱舞

写真左隅に見える橋を渡って登戸へ。予想よりも大分時間があまったのでちょっと寄り道。

寄り道から戻ったら多摩川右岸沿いにひらすら下る。んで武蔵小杉付近で再度寄り道。戻ってきたら橋を渡って大田区へ。

f:id:steleto:20101130023531j:image

橋を渡ったらいきなり高層ビルだらけ。東京すげぇ(笑)

後はこのまま多摩川左岸を下り、東海道線を潜ったら橋を渡って川崎へ。寄り道や休憩も含めると丁度4時間ほどで、走行距離は52.8km。さすがに疲れた。

f:id:steleto:20101127165100j:image

今回は新アイテムとしてHybrid W-ZERO3GPS機能が大活躍。

写真にあるのはGPS Cycle Computer v4.4 SP1 +RCM

他にはモバイルGoogleマップgpsVPなど。

にしても距離がサイコンの値と2割近くずれてるなぁ。電池が切れて再セットした円周データが適当だったせいだろうな(汗)。あと経過時間が3時間になっているのはたぶん停止していた(=休憩)中は時刻をカウントしないからではないかと思われ。


f:id:steleto:20101130020114p:image

GPSの走行ログも取っておいたのでそれをgpsVPに読み込ませてみた図(寄り道部分は削除した)。いやーGPS面白いなぁ。

2010-11-25

[][] フリーズ 01:45  フリーズを含むブックマーク  フリーズのブックマークコメント

とりあえずzbsdmodを2.6用にとりあえず移植できたつもり。で、netbsdカーネルを食わせてみるがフリーズする。シリアルポートにも何も流れてこないので何がおきているのかもさっぱりわからん。

とりあえずnetbsdカーネルイメージ(ELF)をLinuxのメモリ上にコピーするところまではチェックサムが一致できたのでいいとして、zbsdmodでELFファイルをメモリに展開するとことがおかしくて起動できていないのか、それとも起動は問題ないがnetbsdカーネルがおかしいのか。順番としては前者から確認するんだろうが、いい確認方法が思いつかず。

それはそれとして、なんかLinux 2.6.26だとサスペンドしているつもりなのに電池を消費しているようで、放っておくとカラッポになっていることが。CPU_FREQ問題が解消したから大丈夫かと思ったんだが関係ないっぽい。

2010-11-23

[][] CPU frequency change support for PXA250 16:27  CPU frequency change support for PXA250を含むブックマーク  CPU frequency change support for PXA250のブックマークコメント


前回から。

PXA250用のテーブルを用意したら案の定2.6.26でも起動できるようになったとさ。

ちなみに、最新のバージョン(2.6.35)なら既に修正させていないかと期待してみたんだがそんなことはなかった。つまりLinux的にもPXA250はいらない子らしい orz


diff -r 852e2edc5a56 arch/arm/mach-pxa/cpu-pxa.c
--- a/arch/arm/mach-pxa/cpu-pxa.c	Sun Nov 21 15:18:57 2010 +0900
+++ b/arch/arm/mach-pxa/cpu-pxa.c	Mon Nov 22 16:19:09 2010 +0900
@@ -74,11 +74,32 @@
 #define MDREFR_DRI_MASK		0xFFF
 
 /*
+ * PXA250 definitions
+ */
+#define CCLKCFG			CCLKCFG_TURBO | CCLKCFG_FCS
+
+static pxa_freqs_t pxa250_freqs[] =
+{
+	/* CPU   MEMBUS  CCCR  DIV2 CCLKCFG	   run  turbo PXbus SDRAM */
+	{ 99500,  99500, 0x121, 1,  CCLKCFG},	/*  99,   99,   50,   50  */
+	{199100,  99500, 0x221, 0,  CCLKCFG},	/*  99,  199,   50,   99  */
+	{298500,  99500, 0x321, 0,  CCLKCFG},	/*  99,  287,   50,   99  */
+	{298600,  99500, 0x1c1, 0,  CCLKCFG},	/* 199,  287,   99,   99  */
+	{398100,  99500, 0x241, 0,  CCLKCFG},	/* 199,  398,   99,   99  */
+#if 0 /* OverClock */
+	{471900, 118000, 0x242, 0,  CCLKFLG},	/* 236,  472,  118,  118  */
+#endif
+};
+
+#define NUM_PXA250_FREQS ARRAY_SIZE(pxa250_freqs)
+static struct cpufreq_frequency_table
+	pxa250_freq_table[NUM_PXA250_FREQS+1];
+
+/*
  * PXA255 definitions
  */
+
 /* Use the run mode frequencies for the CPUFREQ_POLICY_PERFORMANCE policy */
-#define CCLKCFG			CCLKCFG_TURBO | CCLKCFG_FCS
-
 static pxa_freqs_t pxa255_run_freqs[] =
 {
 	/* CPU   MEMBUS  CCCR  DIV2 CCLKCFG	   run  turbo PXbus SDRAM */
@@ -101,13 +122,13 @@
 	{398100, 99500,  0x241, 0,  CCLKCFG},	/* 199,  398,   99,   99  */
 };
 
-#define NUM_PXA25x_RUN_FREQS ARRAY_SIZE(pxa255_run_freqs)
-#define NUM_PXA25x_TURBO_FREQS ARRAY_SIZE(pxa255_turbo_freqs)
+#define NUM_PXA255_RUN_FREQS ARRAY_SIZE(pxa255_run_freqs)
+#define NUM_PXA255_TURBO_FREQS ARRAY_SIZE(pxa255_turbo_freqs)
 
 static struct cpufreq_frequency_table
-	pxa255_run_freq_table[NUM_PXA25x_RUN_FREQS+1];
+	pxa255_run_freq_table[NUM_PXA255_RUN_FREQS+1];
 static struct cpufreq_frequency_table
-	pxa255_turbo_freq_table[NUM_PXA25x_TURBO_FREQS+1];
+	pxa255_turbo_freq_table[NUM_PXA255_TURBO_FREQS+1];
 
 /*
  * PXA270 definitions
@@ -162,7 +183,11 @@
 			     struct cpufreq_frequency_table **freq_table,
 			     pxa_freqs_t **pxa_freqs)
 {
-	if (cpu_is_pxa25x()) {
+	if (cpu_is_pxa250()) {
+		*pxa_freqs = pxa250_freqs;
+		*freq_table = pxa250_freq_table;
+	}
+	if (cpu_is_pxa255()) {
 		if (policy->policy == CPUFREQ_POLICY_PERFORMANCE) {
 			*pxa_freqs = pxa255_run_freqs;
 			*freq_table = pxa255_run_freq_table;
@@ -342,15 +367,22 @@
 	policy->cur = get_clk_frequency_khz(0);	   /* current freq */
 	policy->min = policy->max = policy->cur;
 
-	/* Generate pxa25x the run cpufreq_frequency_table struct */
-	for (i = 0; i < NUM_PXA25x_RUN_FREQS; i++) {
+	/* Generate pxa250 the cpufreq_frequency_table struct */
+	for (i = 0; i < NUM_PXA250_FREQS; i++) {
+		pxa250_freq_table[i].frequency = pxa250_freqs[i].khz;
+		pxa250_freq_table[i].index = i;
+	}
+	pxa250_freq_table[i].frequency = CPUFREQ_TABLE_END;
+
+	/* Generate pxa255 the run cpufreq_frequency_table struct */
+	for (i = 0; i < NUM_PXA255_RUN_FREQS; i++) {
 		pxa255_run_freq_table[i].frequency = pxa255_run_freqs[i].khz;
 		pxa255_run_freq_table[i].index = i;
 	}
 	pxa255_run_freq_table[i].frequency = CPUFREQ_TABLE_END;
 
-	/* Generate pxa25x the turbo cpufreq_frequency_table struct */
-	for (i = 0; i < NUM_PXA25x_TURBO_FREQS; i++) {
+	/* Generate pxa255 the turbo cpufreq_frequency_table struct */
+	for (i = 0; i < NUM_PXA255_TURBO_FREQS; i++) {
 		pxa255_turbo_freq_table[i].frequency =
 			pxa255_turbo_freqs[i].khz;
 		pxa255_turbo_freq_table[i].index = i;
@@ -371,7 +403,9 @@
 	 * Set the policy's minimum and maximum frequencies from the tables
 	 * just constructed.  This sets cpuinfo.mxx_freq, min and max.
 	 */
-	if (cpu_is_pxa25x())
+	if (cpu_is_pxa250())
+		cpufreq_frequency_table_cpuinfo(policy, pxa250_freq_table);
+	else if (cpu_is_pxa255())
 		cpufreq_frequency_table_cpuinfo(policy, pxa255_run_freq_table);
 	else if (cpu_is_pxa27x())
 		cpufreq_frequency_table_cpuinfo(policy, pxa27x_freq_table);
diff -r 852e2edc5a56 include/asm-arm/arch-pxa/hardware.h
--- a/include/asm-arm/arch-pxa/hardware.h	Sun Nov 21 15:18:57 2010 +0900
+++ b/include/asm-arm/arch-pxa/hardware.h	Mon Nov 22 16:19:09 2010 +0900
@@ -69,6 +69,18 @@
 		_id == 0x212;				\
 	})
 
+#define __cpu_is_pxa250(id)				\
+	({						\
+		unsigned int _id = (id) >> 4 & 0xfff;	\
+		_id == 0x290;				\
+	})
+
+#define __cpu_is_pxa255(id)				\
+	({						\
+		unsigned int _id = (id) >> 4 & 0xfff;	\
+		_id == 0x2d0;				\
+	})
+
 #define __cpu_is_pxa25x(id)				\
 	({						\
 		unsigned int _id = (id) >> 4 & 0xfff;	\
@@ -76,6 +88,8 @@
 	})
 #else
 #define __cpu_is_pxa21x(id)	(0)
+#define __cpu_is_pxa250(id)	(0)
+#define __cpu_is_pxa255(id)	(0)
 #define __cpu_is_pxa25x(id)	(0)
 #endif
 
@@ -124,6 +138,16 @@
 		__cpu_is_pxa21x(read_cpuid_id());	\
 	})
 
+#define cpu_is_pxa250()					\
+	({						\
+		__cpu_is_pxa250(read_cpuid_id());	\
+	})
+
+#define cpu_is_pxa255()					\
+	({						\
+		__cpu_is_pxa255(read_cpuid_id());	\
+	})
+
 #define cpu_is_pxa25x()					\
 	({						\
 		__cpu_is_pxa25x(read_cpuid_id());	\

2010-11-19

[][]ぁゃιぃ 02:19 ぁゃιぃを含むブックマーク ぁゃιぃのブックマークコメント

気晴らしにこのときのCPU_FREQ問題を見ていたらなんとなくそれっぽいのが。

static pxa_freqs_t pxa255_run_freqs[] =
{
        /* CPU   MEMBUS  CCCR  DIV2 CCLKCFG        run  turbo PXbus SDRAM */
        { 99500,  99500, 0x121, 1,  CCLKCFG},   /*  99,   99,   50,   50  */
        {132700, 132700, 0x123, 1,  CCLKCFG},   /* 133,  133,   66,   66  */
        {199100,  99500, 0x141, 0,  CCLKCFG},   /* 199,  199,   99,   99  */
        {265400, 132700, 0x143, 1,  CCLKCFG},   /* 265,  265,  133,   66  */
        {331800, 165900, 0x145, 1,  CCLKCFG},   /* 331,  331,  166,   83  */
        {398100,  99500, 0x161, 0,  CCLKCFG},   /* 398,  398,  196,   99  */
};

このテーブルにあるCCCRレジスタ(Core Clock Configuration Register)の値なんだが、なんか昔オーバークロックネタがらみでPXA250(SL-C700)とPXA255(SL-C750/760/860)で値が違ったような気が…ということで調べてみた。

とりあえずPXA250の場合だと、上のテーブルにある値のうち0x161は使えない模様。まぁテーブルの名前が「pxa255_run_freqs」なので間違っちゃいないのだが、使われ方をみるとPXA250の場合でも参照してしまいそうな予感。

2010-11-16

はやぶさ「おつかいできたよ」 02:41 はやぶさ「おつかいできたよ」を含むブックマーク はやぶさ「おつかいできたよ」のブックマークコメント

ついに「100点満点で500点」という脅威のフルサクセス達成。おめでとう!!! > JAXA & はやぶさ

それにしても帰還してきた時点でうすうす感じてたけど、ホント付喪神とか宿ってたんじゃないかこれ…



f:id:steleto:20101117022357p:image

。・゚・(ノД`)・゚・。

2010-11-08

灰耳から黒耳02:36 灰耳から黒耳へを含むブックマーク 灰耳から黒耳へのブックマークコメント

f:id:steleto:20101107211433j:image

機種変したよ。

料金プランも変わることになったけども、どうせ発信なんて滅多にしないので実質値下げ。しかもデータ定額というおまけつき。

そんでもって[es]の端末がフリーになったことで、あんなことそんなことこんなことを心おきなく試せるようになるというドキがムネムネする展開へ。

ざ・ずーざ・ずー 2010/11/13 22:58 ていうか同機種への機種変って大丈夫なのか…
俺もesの電池あやしくなってきたから取り換えようかなー

steletosteleto 2010/11/15 22:33 んにゃ、無印[es]から灰鰤(hybrid w-zero3)への機種変。…やっぱりキーボードないから打ちづらいな…。

2010-11-01

[][] うーむ 03:01  うーむを含むブックマーク  うーむのブックマークコメント

NetBSD-currentとSHARPC3000のソースコードを行ったりきたり。

最初はC700のソースコードも見ていたけど、よく見たらC3000のソースにもC700の修正が入ったままなのに気付いてからは放置。

自転車運用中 03:01 自転車運用中を含むブックマーク 自転車運用中のブックマークコメント

チェーン落ち問題も解決したので先週から駅までの通勤に使用中。駅の駐輪場で拒否されたらどうしようかと思っていたけど今のところ特に反応なし。単にこんな変自転車と関わりたくないのかも知れない。

自転車の形が形なので駐輪したときにさぞかし目立つだろうと思っていたけど、車高が低いおかげで遠目だと他の自転車に埋もれてそれほど目立たないみたい。近くまでいけばやっぱりすぐ判るけども。

あそこの駐輪場でs17のユーザなんて他にいないだろうから、もし自転車を見かけたら「あぁまだ仕事してんのか」と思っていただければ(笑)