bootloader

    2

    1答えて

    私はアセンブリでhello worldブートローダを書くためのチュートリアルに従っており、x-86マシン用にNASMアセンブラを使用しています。私はいくつかの困難が、私はDBコマンドを使用して1バイトに完了「のHello World」という文字列を置くことができる方法を理解してい [BITS 16] ;Tells the assembler that its a 16 bit code [ORG

    7

    1答えて

    これは私が使用しているプロセッサに固有のものなのかどうか分かりませんので、私はCortex M0 +を使用しています。私は不思議に思っていました:-fPICを使ってgccを通して16進ファイルを生成すると、私は位置独立コードを生成します。しかし、objcopyから出てくるint 16進ファイル形式は、常に各行のヘッダーのアドレス情報を持っています。私がブートローダを書こうとしているのであれば、その

    0

    2答えて

    私が知っているように、プロセッサはRAMに直接アクセスできます。起動時のデバイスのRAMは空であり、CPUはブートローダーをどこにロードしてRAMから実行するのかを知りません。コールスタックは空でなければならないので、何もできません。 さらに実行するためにブートローダプログラムをRAMにコピーする方法はありますか? これは、スマートフォンなどの埋め込みデバイスで発生するはずです。 x86 PC B

    0

    1答えて

    スタックポインタを2バイトの境界に揃える必要があることが分かりました。つまり、SPを0xF(またはその他の奇数)で終わる値に設定すべきではありません。 SPとして0xFFFFを使用するとどうなりますか? 64kBはすべて使用可能か、それとも1バイト少ないですか? スタックサイズを1024バイトにしたい場合は、SPを0x3FFまたは0x400に設定する必要がありますか?例えばSS(スタックセグメント

    1

    1答えて

    私はアセンブリでブートローダを作成していますが、それはqemu、bochs、およびvirtualboxで正常に動作するようです。しかし、カーネルを実際のハードウェアにロードしているわけではありません。 ブートローダは、(デバッグ用の)ビデオメモリに文字を書き込むことから始まり、ドライブからセクタ2を読み込み、カーネルに遠くまでジャンプします。カーネルはビデオメモリにいくつかの文字を書き込んでいます

    1

    1答えて

    私は単純なOSを書いています。emu8086でブートローダーとカーネルを書いてフロッピーセクタに書き込みました。エミュのフロッピードライブから起動すると、すべて正常に動作しますが、フロッピーから仮想ボックス内で起動すると操作ができなくなります。たとえば、次のコマンドは、システムの日付と時刻を取得 :エミューで infoCommand: lea si, info_msg call printSt

    -1

    1答えて

    私はOS開発を学んでおり、私は暫定レベルです。シンプルなブートローダを作った。ディスク上の他のファイル(HDDまたはUSBドライブ)にアクセスするには、どのアドレッシングモードを使用するのですか(CHSまたはLBAまたはINT 13h拡張子)。 どのアドレッシングモードが非常に効率的ですか(つまり、ほとんどのドライブで使用できます)? おかげすべての

    1

    2答えて

    私はArduino Microの開発ボードを使用してプロジェクトを終了し、スタンドアロンのATmega32に移行したいと考えています。 私はこれを3.3Vで動作させる必要があります。オーバークロックの道を下りたいので、8MHzのクリスタルを置いてください。 私はまだUSBとArduinoコンパイラを使ってスケッチをアップロードしたいので、別のブートローダーを焼く必要があります。 この目的のために、

    0

    1答えて

    私は私のブートローダは、純粋なアセンブリで書かれている間はgcc GNUアセンブリ内の16ビットカーネルを構築しようとしていますが、単一の文字は大丈夫ている間、私はトラブルの文字列をプリントアウトを持っています。ここでは は私ですbootloader.asm: org 0x7c00 bits 16 section .text mov ax,0x1000 mov ss,ax