シリアル通信のSCI3_OUT_DATA命令が動いてない気がする。
3664.hのファイル見つけたけど、最新版に使えないよ〜
見比べて書き換えるしかないか・・・
SCI3_OUT_DATAって、defineされてるだけでしょ
よくわからないから、サンプルをコピペして、3694.hにして
通信速度だけ直接レジスタに書き込んで3664用のボーレイトに変えたんだけど、
サンプルが作動してない。
ほかにも違う所があるのかも。
最新版用の3664.hは、どこかにないかな?
うちが持ってる3664.hは、 タイムスタンプが2003/08/05 06:11:16で、
51,505バイト。 これより新しいのがあるかな?
自前で書いたら、それが最新
158だけど、自分の手持ちも159と同じ。最新版には使えない様な・・・
インストール方法があるのかもしれないが。
自前で書くには何ヶ月かかるかわからない。
もう一度、3694.hで、ボーレイト設定を3664用にしたら、サンプルのSCI3_OUT_DATAが機能してた。
前回はなにか間違えてたみたい。
自前にトライしてみようかな。
構造体と共用体がわかってるなら
ハードウェアマニュアルとにらめっこしながらで
1週間もあれば、出きるでしょ。
3694.hを参考にしながら、SCI部分だけでもやってみたら
ふと…
マイコン毎の定義ファイルの存在を知らず、ハードウェアマニュアル片手にポート定義やビットテーブルを
イチから組んできた俺はマイノリティというか愚かなのだろうかという気がしてきた
道具に使われてるよりはましなんじゃないの
>>162 は、GCCの3694fフォルダにあるsci3.cとかを使おうとしているのかな。
俺も
>>164と同じく、sci3.cに相当するコードを全部自前で書いてる。
何十回も使い回したからインターフェースも暗記してるし、sci3.cより効率もいい。
でも162のアプローチも間違いではないとおもう。SCI3のポートアドレスと、
SMRのクロックセレクトを3664の石ではどうなるか確認すれば動くと思うよ。
166を書いた後でsci3.cを読んでみた。割と素直に書かれているじゃない。
俺の自前はバッファをドライバ側に抱え込むこととバッファサイズを2のn乗に
限ることで、ring読み書きの際割り算が起きないようにしたり工夫してるけど、
思想的には殆ど一緒だった。
シリアル程度なら、「まともなヤツ」が「普通に作れば」そんなに変わらない
162だけど、
3694.hの下記の部分の右側だけ書き換えたら動くと思ってる
/*--------------------------------------------------------------*/
/* シリアル通信関数(FIFOバッファ付) */
/*--------------------------------------------------------------*/
typedef enum { // ボーレート設定リスト
br4800 = 129,
br9600 = 64,
br19200 = 32,
br31250 = 19,
br38400 = 15,
br57600 = 10
IIC接続も違いがあるらしいが、今は使わないから後回し。
他も違いがあるのかどうか知らない。ハードウェアマニュアルのページが多くて。
タイマー周期は3664のサンプルプログラムなら大丈夫だろうし。
Cは入門書のポインターで止まってて、その後ろに構造体とかあったような・・・。
sci3.cなんて無視してた。3694.hだけ見てた。
ジャンク工業用ミシン買って、振動の少ない回転数で使おうと、
DCモーターの親戚のようなACモーターの回転数制御のためとマイコン買った。
裁縫はお休み状態。
kpitの中の人のgccに入れようとしてるパッチって今ひとつなんだよね
追加パッチじゃなくて、bugfixのパッチあげりゃあいいのに
171 :
774ワット発電中さん:2010/03/10(水) 23:41:51 ID:aI2THs+v
三三三三三三三三三三三三三三三三三三三三三三三三三三三三三
三三三三三l =====(((()=== l´.l三三三三三三三三三三三三三三
三三三三三||.l三三三|| \ 三 l |三三三三三三三三三三三三三
三三三三三||.l三三三||三 \ l |三三三三三三三三三三三三
 ̄ ̄ ̄ ̄ ̄||,l.-‐=テ||= ‐ - l | ̄ ̄ ̄ ̄
l ‐- 、- ==-v‐‐. l
| 彡| (?
| ああああああああ彡|
| 井戸 彡| Λ Λ
"´ ‐- 、- - ‐‐."` ( )<
>>164 鳩山には遠く及びませんが、立派な情弱です。胸を張って生きてください。
kpitの中の人のパッチ、また、お断りされちゃったね
kwsk
kpit版のコンパイラ本体の改良点が知りたい。
ソースたぐりよせてdiffれカスはナシの方向で。
何をkwskかわからんけど
shの割り込みの終了処理のコードの問題は直ってたような
longが64bitな環境で、
h8300をターゲットにする時はbinutilsにパッチあてないと
関連ライブラリをコンパイルする時にwarningがでる
あのパッチじゃ、このコードもダメになるじゃないかな
rts
mov.l @r15+,r14
H8S用にコンパイルしています。main()冒頭のER4,5,6をpushする命令を
出させない方法ありませんか?
180 :
774ワット発電中さん:2010/04/21(水) 04:44:20 ID:LROe2Kgj
age忘れました。すいません
naked
void main () __attribute__ ((noreturn));
183 :
179:2010/04/21(水) 13:34:33 ID:LROe2Kgj
ありがとうございます!
>>182の方法でできました。
void main(void) { // 電源ONでここに来る
extern char stack[]; // startupで隠している情報
asm (" mov.l #_stack,sp"); // LINK制御文により00FFC000になる。
DI; // 割り込み禁止
HardwareSetup(); // Hardware Setup(含ROM,RAM init)
こうすると、h8crt0.sというASMのstartupコードを追放できます=Hewのentryと同様に。
ROM→RAMcopyと、RAMクリヤはHardwareSetup()中で任意のタイミングでできます。
__attribute__ ((noreturn))
void
main()
{
extern char stack[];
asm (" mov.l %0,sp"::"i"(&stack));
for(;;);
}
185 :
179:2010/04/22(木) 04:48:39 ID:8aqrlx2Z
そのほうがスマートな書き方ですね。%0と後ろのどれが対応するとか、"i"の意味とか
その辺はどこの章を読めばいいですか?
187 :
774ワット発電中さん:2010/04/22(木) 07:40:07 ID:JskXH1yP
188 :
179:2010/04/22(木) 08:02:05 ID:8aqrlx2Z
>>187 それはIARのコンパイラのことですか? それなら小さいlibでのビルドは
成功しています。
189 :
179:2010/04/22(木) 09:00:09 ID:8aqrlx2Z
>>186 ありがとうございます。なんか抽象的でよく解りませんが、
使用例をちょっとずついじりながら使ってみようとおもいます。
190 :
179:2010/04/22(木) 09:05:05 ID:8aqrlx2Z
今 -O1 レベルの最適化でコンパイルしていますが、関数の順序が入れ替わる
ファイルとそうでないのがあるのですね。これはどういう基準で起きるのでしょう?
>関数の順序が入れ替わる これはどういう基準で起きるのでしょう?
とりあえず、gccのバージョンによって違うとしか
h8300.mdを読むとインラインアセンブラの使い方がわかるかも
mdファイルを読むのは大変だけどね
192 :
179:2010/04/23(金) 11:54:57 ID:eI+fjbR8
ありがとうございます。
binutils2.20向けのrx-elfのパッチが出てるね
んなもんsnapshot使えばいいやん。
とか思わなくもない。
>>164 >>172 この前、Hewのアップデートをかけて新しいCPUのI/O定義ファイルを
手に入れたんだが、以前使っていたCPUと定義ルールが違っていて、
プログラムソースを修正するハメになった。
自分で書いてれば、こんな目には遭わないだろうね。
しまった、オリジナルは+mだった
>>178 試してみたけど、案の定、改悪しちゃったね。
kpitの中の人はsh2aのmovuを使えるようにするパッチとかはつくらないんだろうか?
>>196 bsetは修正されたけど、bnotとbclrは忘れてるっぽい
sh2aのmovmlとmovmuを使うようにgccを改造してみた。
すっきりした汗のソースを吐くようになったよ。
202 :
774ワット発電中さん:2010/08/20(金) 01:27:08 ID:PIzyVJYh
shのgccだとdt使うpeepholeが悪さして、変なコードを吐くことがある。
peephole2で回避できるみたいだけど...
kpitの中の人はsh2aのmovmlの追加で迷走してるみたいだね。
あのmdの追加じゃ、変な汗のソースを吐くことがあるような。
添削ついでに、新しいpatchが出たけど、
r7固定にしたんじゃ、sh2aのmovmlの効果があんまりないような。
kpitの中の人はあきらめたのかな?
sh2aのmovmlを使うようにするとこんな汗吐くようになるんだけどね。
mov.l r7,@-r15
mov.l .L3,r7
mov.l @r7,r7
mov.l r15,@-r7
mov r7,r15
movml.l r6,@-r15
movmu.l r14,@-r15
sts.l mach,@-r15
mov.l .L4,r0
sts.l macl,@-r15
jsr @r0
mov r15,r14