2013-10-12 4 views
3

От http://www.altdevblogaday.com/2011/08/06/demise-low-level-programmer/:Где узнать больше о низкоуровневом программировании? например, драйвера устройств

«Когда я начал программировать многие из элементов, которые мы считаем само собой разумеющиеся сейчас, не существовал Там не было DirectX и не много совместимых ЛИЭСОВ были доступны для свободных составителей дня.. Поэтому мне пришлось написать свой собственный код для большинства базовых программ, обработчиков клавиатуры, обработчиков мышей, аксессуаров для видеопамяти, растеризаторов, текстурных картографов, blitters ... программы, которые я написал тогда, были на 100% моим собственным кодом, и мне приходилось иметь возможность обрабатывать все и все."

Я ищу советы о том, как узнать больше о низкоуровневом программировании. Например, написание драйвера клавиатуры/мыши, драйвера vga или базовой функции, например malloc.

Каков наилучший способ приблизиться к этому? Я студент-студентка бакалавриата и провела курсы по компьютерной архитектуре/сборке, где мы написали простой конвейерный процессор в VHDL на DE0-nano FPGA. У меня есть приличное знание программирования С.

Мне кажется, что это сложно понять на современном компьютере x86. Являются ли микроконтроллеры лучше (например, arduino board)? Или FPGA (но мой DE0-nano кажется ограниченным)? Или, может быть, купить старый компьютер, например Commodore 64, чтобы узнать, как люди тогда?

И есть ли какие-либо ресурсы, как книга на эту тему?

+0

Написание собственной операционной системы может быть хорошей идеей.Если вы не хотите начинать с нуля, проверьте mikeOS: http://mikeos.berlios.de/ – BlackBear

+0

вы проработали путь через ссылки г-на Фёрта? Я бы сделал это, прежде чем отвлечься на что-то другое (если вы верите в то, что он говорит, я согласен с ним), большинство из этих элементов, если не все, можно сделать с приложениями на windows или linux. Не нужно заново изобретать колесо для этого образования. –

+0

Его статья войн в основном о оптимизации. Я только что взял первый абзац, который излагает то, что я хочу знать. Тем не менее у меня есть некоторые приличные знания об этих ссылках, например, предсказание ветвей. – anotherCode245

ответ

2

Я бы порекомендовал подход микроконтроллера, msp430, avr или одно из многих плеч. Вы можете получить msp430 или одну из пусковых площадок от ti примерно на 10-20 долларов, вы можете найти платы обнаружения на основе stm32 для 10-20 баксов, stm32f0 (cortex-m0) прост, базовый. В stm32f4 загружаются такие вещи, как кеши и fpu, но все же микроконтроллер.

Я думаю, что подход микроконтроллера вернет вас к корням, очень простой материал, у аппаратного обеспечения нет обычно видео или жестких дисков или чего-то еще, но вы узнаете, как осваивать инструменты (компилятор, компоновщик и т. Д.) И как читать руководства и т. д.

Вы могли бы просто перейти вперед к оборудованию с поддержкой Linux, например, к малине pi или beaglebone. На всех уровнях, но, в частности, на уровнях, совместимых с Linux, помимо руководств для видеочипов, чипов USB и т. Д., Вы также захотите использовать исходный код linux для изучения. Поймите, что драйверы Linux часто очень универсальны и часто содержат код для управления целым семейством или всей историей аппаратного обеспечения у одного поставщика, поэтому куча кода может не соответствовать чему-либо в руководстве, но некоторые из них будут, и именно там вы будете перейдите через горб понимания того, что говорится в руководстве. Не означает, что вам нужно перезаписать linux, чтобы использовать эту информацию.

Начать небольшую работу за один шаг за раз, pcie и видео только с нуля - главная задача, если вы начнете там, вы, скорее всего, потерпите неудачу, если у вас уже есть знания и опыт (если вы это сделали, здесь прошу).

Подход, который вы также можете использовать, - это bochs или что-то, что эмулирует старую систему DOS 8086, и если вы можете найти хорошие, старые, основанные на dos/8086 руководства, которые вы можете вызывать у регистраторов, cga mode, vga mode и т. Д. . Дисковые контроллеры могут быть сложными и т. Д.

Есть много оружия, avr, msp430, mips и т. Д. (И x86, но я бы не пошел туда для этого дольше) симуляторы набора инструкций, которые позволяли бы избежать стоимость аппаратного обеспечения, а также избежать затрат на повреждение оборудования и необходимость покупать больше (это происходит даже при большом опыте), даже лучше писать собственный симулятор набора инструкций ... vba некоторые симуляторы nds, работающие до qemu.