パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

8ビット/24MHz動作の「ATmega1284p」プロセッサでARM Linuxを動かす、ログインできるまで6時間」記事へのコメント

  • by Anonymous Coward on 2012年04月03日 7時17分 (#2128481)

    デバイスのエミュレーションはたしかに面倒くさいのだが、根気以外に必要なものもなさそうだ
    エミュレーションホストのほうに著しい制限があるのか?

    おっちょこちょいのために言っておくと、disっているわけではないので

    • by Anonymous Coward on 2012年04月03日 9時04分 (#2128529)

      その根気が、尋常じゃない根気だろうから、それだけでもすごいと思うけど、
      あとは、他コメントにあるけどメモリの問題で、それは直接制御で回避してるけど、
      それは制御するソフトウェア書いたって事だからそれはそれですごい。
      そのメモリもそうだけど、難しい点の一つが、リアルなハードウェアはリアルな時間の流れのなかで動作しているので、
      その時間制約をクリアする点で、今回はハードウェアが少ないから、まだましだったのかな。
      あとは、linux側もタイムアウトとかタイマ割り込みとかあると思うので、その辺の制約とか安定性確保とか、
      linuxのドライバ回りに精通していないとなかなか難しいのでは。それもすごい。

      というかデバッグ環境どうしてたんだろう。
      最初はエミュレータの上でエミュレータの開発してたんだろうけど、最終的にはそういう実機でないと出ないバグあるから、
      2時間動かして止まっててRAMリフレッシュ止まってコア吐く前に消えてとか、考えただけで嫌になる。

      趣味で好きだからこそできたんだろうな。

      親コメント
      • by AZUCO (32400) on 2012年04月03日 11時40分 (#2128632) ホームページ
        エミュレータにおける時間の扱いは、物によって難度が違うんですよね。

        デバイスのステートだけを見て書いてるプログラムの場合は、ステートさえちゃんと反映しておけば、特に問題無いです。
        ステート見ずに、他の手段でタイミングを計っている場合は、そのタイミングを計っているデバイスをちゃんと実装すればそんなに問題は無いです。
        そのタイミングを計るデバイスがそれぞれバラバラの場合は、それぞれの動作タイミングを合わせないと全然動かない場合が多いです(これが一番厄介)
        エミュレータが扱う時間も、仮想時間、実時間、がありますから、実→仮想時間へのマッピングや、仮想→実時間へのマッピングなんかが問題になる場合もあります。

        今回のコレは、想像で書いて申し訳ないのですが、恐らくデバイスの制御はステートを見てコントロールしてるんじゃないかと思います。

        個人的にはメモリ空間を表現するのが大変だっただろうなぁ・・・と。
        DOSのEMSみたいにいったんばらばらにして、仮想的に大域を表現したのかなと。
        親コメント
    • by T.SKG (20663) on 2012年04月03日 10時08分 (#2128554) 日記

      以前話題に上った
      「ラジコンのミニチュア重機で地下室を掘る」とか、
      http://idle.srad.jp/story/12/02/18/1921222/%E3%83%A9%E3%82%B8%E3%82%B3... [srad.jp]

      技術書でも欧米人の書いたものに「厚さ」と「濃さ」に、その精力とか根気の強さを感じるものがあったり
      以前の上司は、それを体格と肉食のなせる技だと言いながら、肉ばかり食べて腹回りばかり立派にしていましたが
      でも、こういう根気強さが育まれ許される(これも一種の)文化の違いかなあと思います。
      何でも文化のせいにはしたくないけど、根気を保てる「環境」が必要なのでしょう。

      親コメント
    • by Anonymous Coward

      まぁ世の中根気さえあれば何でも出来ますよね(棒
      #根気さえあれば著しい制限があるのか?とか疑問系で放置するバカなまねをしないでもすみますし

    • by Anonymous Coward

      警告していたのにやっぱりおっちょこちょいというか馬鹿が沸いてきたね

      イメージ的にマイクロプログラミングっぽいな

      • by Anonymous Coward

        警告(笑)さえしとけば何言っても許されるとか思ってる馬鹿が何言ってるの

      • by Anonymous Coward

        ここ最近、反論禁止の前置きをしつつ狭量な意見を投げる人が出没してますね。
        今の時期は学生さん暇なんでしょうけど、反論が嫌ならもう半年ROMってた方が…。

        • by Anonymous Coward

          ほっときゃいいのにいちいち噛みつく人も出没してますね。

      • by Anonymous Coward

        > エミュレーションホストのほうに著しい制限があるのか?
        あるんだよ。

        外バスのないプロセッサで無理矢理GPIO経由でメモリアクセスしてるという状態が「著しい制限」でないと思ってるとしたら、相当の大馬鹿だ。

        • by Anonymous Coward

          > 外バスのないプロセッサで無理矢理GPIO経由でメモリアクセスしてるという状態が

          GPIOでアドレッシングするだけなら普通のテクニック。8bit時代の漢字ROMとか大容量RAMボードとか。
          結果として、エミュレーションというよりマイクロプログラム的になったのは確かに面白い。

          わざわざDRAMをつけたりするところも趣味全開で面白いし、taka2氏の投稿によれば少ないメモリ(これは著しい制限だね)でよくやっていると思う。

          • by Anonymous Coward

            「GPIOでアドレッシングするだけ」ではないので的外れ。

            > 8bit時代の漢字ROMとか大容量RAMボードとか。
            GPIOだけでアクセスしている例はないですね。
            バンク切り替えの話をしているとしたら、全然違う。

            > エミュレーションというよりマイクロプログラム的
            何度もこの言い回しをしているようだが意味不明。

            • by Anonymous Coward

              > 何度もこの言い回しをしているようだが意味不明。

              あなたがマイクロプログラムについてご存知ないからでしょう。

              マイクロプログラムはCPU内部やメモリアクセスの信号をあらかた全部自分で作って出力するわけです。
              これと8bit時代の例をあげたテクニックと合わせてはじめて、私の「確かに面白い」という感想が理解できるようになります。
              「GPIOでアドレッシングするだけ」「GPIOでアドレッシングするだけ」というあなたの理解がいかに的外れかは明白です。
              大事なことなので何度もこの言い回しを繰り返しました。

              • by Anonymous Coward

                「マイクロプログラム」と書けばが何か説明した気になっているというあたりが頭悪いです。

                > マイクロプログラムはCPU内部やメモリアクセスの信号をあらかた全部自分で作って出力するわけです。
                という理解がすっとこどっこいです。

                > 8bit時代の漢字ROMとか大容量RAMボードとか
                のどこに「マイクロプログラム」が絡んでますか?

                GPIOでCSを設定してるだけ(バンク切り替え)なのと、GPIOだけでアドレス/データバス/CE/WRその他諸々全部制御してメモリリフレッシュまで行っているのが一緒と思える頭が気の毒です。

              • by Anonymous Coward

                > GPIOでCSを設定してるだけ(バンク切り替え)なのと、

                誰がバンク切り替えだと言いましたかね。
                バンク切り替えではコードを任意の場所に置けないので、8255などのポートにRAMを接続して制御するタイプのメモリボードが結構あったのです。
                自分の無知を他人に当てはめないでください。

                > GPIOだけで

                GPIOでCPU内部のラッチをエミュレートしているだけですね。

                > アドレス/データバス/CE/WRその他諸々全部制御して

                マイクロプログラムとはそういうものです。ご存知ないとはさすが無知の大王。

                > メモリリフレッシュまで

                前項とあわせてこのへんが今回の記事の面白みのあるところです。

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

処理中...