Что такое регистр файла
В этой статье описывается реестр Windows и приводятся сведения о том, как его изменить и создать его резервную копию.
Применимо к: Windows 10 (все выпуски), Windows Server 2012 R2
Оригинальный номер базы знаний: 256986
Заключение
Хотя 8086 процессору уже 42 года, он до сих пор оказывает значительное влияние на современные компьютеры, поскольку архитектура х86 до сих пор очень часто используется. Регистры 8086 до сих пор существуют в современных компьютерах х86, хотя сегодня они уже имеют длину в 64 бита, а кроме этих регистров существует и множество других.
Кристалл 8086-го очень интересно изучать, поскольку его транзисторы можно рассмотреть под микроскопом. В своё время это был сложный процессор, поскольку на нём расположено 29 000 транзисторов, однако достаточно простой для того, чтобы отследить все цепи и понять, как они работают.
В предыдущем уроке мы рассмотрели работу с битовыми операциями и двоичными числами, тем самым заложив основу для рассмотрения новой темы. В этом уроке мы с Вами рассмотрим очередной вопрос: что такое регистры и как с ними работать?
Память и регистры
Одним из самых важных навыков необходимых при работе с микроконтроллерами является умение взаимодействовать с регистрами. Давайте для себя разберемся, что же это такое?
В целом, регистр — это особый вид памяти внутри микроконтроллера, который используется для управления процессором и периферийными устройствами. Каждый регистр в архитектуре ARM представляет собой ячейку памяти и имеет длину в 32 бита, где каждый бит можно представить в виде крошечного выключателя с помощью которого осуществляется управление тем или иным параметром микроконтроллера.
Каждый из регистров имеет свой порядковый номер – адрес. Адрес регистра обозначается 32-битным числом представленным в шестнадцатеричной системе счисления. Путём записи по адресу регистра определённой комбинации единиц и нулей, которые обычно представлены в шестнадцатеричном виде, осуществляется настройка и управление тем или иным узлом в МК. Вспомним, что в программе для работы с битовыми операциями, мы могли представить в виде шестнадцатеричного числа произвольный набор единиц и нулей. В целом стоит отметить, что существует два вида регистров: регистры общего назначения и специальные регистры. Первые расположены внутри ядра МК, а вторые являются частью RAM-памяти.
Так же стоит отметить, что Reference Manual, который мы скачивали в первом уроке, это один большой справочник по регистрам, содержащимся в целевом микроконтроллере, а библиотека CMSIS позволяет нам оперировать символьными именами регистров вместо числовых адресов. Например, к регистру 0x40011018 мы можем обратиться просто, используя символьное имя GPIOC_BSSR. Конкретные примеры конфигурирования мы рассмотрим в ходе разбора нашей программы из первого занятия.
Итак, обычно структура регистра описывается в виде небольшой таблицы с указанием:
- Названия регистра и описания его назначения
- Адреса регистра или смещением относительно базового адреса
- Значения по умолчанию после сброса
- Типа доступа к ячейкам регистра (чтение, запись, чтение/запись)
- Значения и описания параметров записываемых битов
Многопортовые регистры
Пока что мы рассмотрели восемь «нижних регистров» общего назначения. У 8086 есть также семь «верхних регистров», используемых для доступа к памяти, включая печально известные сегментные регистры. У этих регистров схема работы более сложная, многопортовая, позволяющая одновременно вести несколько процессов чтения и записи. К примеру, многопортовый регистровый файл позволяет прочесть счётчик программы, сегментный регистр и записать другой сегментный регистр – и всё это одновременно.
Приведённая ниже блок-схема отличается от большинства блок-схем для 8086, поскольку показывает реальную физическую реализацию процессора, а не ту, что представляет себе программист. В частности, на диаграмме показано два «регистра внутренних коммуникаций» среди регистров модуля интерфейса шины (справа) вместе с сегментными регистрами, совпадающими с 7 регистрами, которые можно рассмотреть на кристалле. Временные регистры, показанные ниже, физически являются частью АЛУ, поэтому в данной статье я их не рассматриваю.
В книжке "Разработка современных процессоров" обсуждаются сложные системы регистров в процессоре, начиная с 2000-х годов. Там написано, что сложность цепей быстро выходит за рамки трёх портов, а в некоторых передовых процессорах существуют регистровые файлы с 20 или более портами.
Многопортовая регистровая ячейка ниже создана на основе той же схемы из двух инверторов, однако у неё есть три разрядных шины (а не одна, как в предыдущем случае) и пять управляющих шин (вместо двух). Три шины чтения позволяют читать содержимое регистровой ячейки по любой из трёх разрядных шин, а две шины записи позволяют разрядной шине А или С вести запись в регистровую ячейку.
Многопортовая регистровая ячейка в процессоре 8086
У верхних регистров есть разное количество портов для чтения и записи: два регистра с 3 шинами чтения и 2 шинами записи, один регистр с 2 шинами чтения и 2 шинами записи, четыре регистра с 2 шинами чтения и 1 шиной записи. Три первых регистра – это, вероятно, счётчик программы, непрямой временный регистр и временный регистр операнда. Последние четыре – вероятно, сегментные регистры SS, DS, SS и ES. Также там есть три регистра буфера предварительной выборки команд, каждый с одной шиной для чтения и одной для записи.
Файл верхних регистров, состоящий из десяти 16-битных регистров. На фото видно кремний и поликремний. Вертикальные красные линии – остатки удалённого металлического слоя. Кликабельно.
Метод 1. Восстановление подразделов реестра
Чтобы восстановить экспортированные подразделы реестра, дважды щелкните файл реестра (REG), сохраненный в разделе «Экспорт подразделов реестра». Кроме того, можно восстановить весь реестр из резервной копии. Дополнительные сведения о восстановлении всего реестра см. в приведенном ниже разделе Метод 2. Восстановление всего реестра этой статьи.
Проверка результатов работы нашего кода
Небольшое приятное дополнение в конце статьи: в Keil имеется отличный Debug-инструмент с помощью которого мы можем пошагово выполнить нашу программу и просмотреть текущее состояние любого периферийного блока. Для этого после загрузки прошивки после компиляции мы можем нажать кнопку Start Debug Session:
Рабочая среда Keil переключится в режим отладки. Мы можем управлять ходом программы с помощью данных кнопок:
И есть еще одна удобная функция работы с периферией в режиме отладки, она позволяет просматривать текущее состояние регистров и менять их состояние простым кликом мышкой.
Для того чтобы ей воспользоваться — нужно перейти в соответствующий периферийный блок и справа откроется окно с указанием регистров и их значением.
Если вы кликните по одному из пунктов данного меню, вы увидите адрес регистра и его краткое описание. Так же можно просмотреть описание к каждому отдельному параметру регистра:
Попробуйте самостоятельно пошагово выполнить программу, включить/выключить светодиоды не используя программу, а используя данный режим работы с микроконтроллером. Простор для фантазии тут обширный. Так же попробуйте поиграться с длительностями задержек, сделайте одновременное моргание обоими светодиодами. В общем экспериментируйте! )
Windows 7 Enterprise Windows 7 Professional Windows 7 Home Basic Windows 7 Home Premium Windows 7 Starter Windows 7 Ultimate Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Datacenter Windows Server 2008 R2 for Itanium-Based Systems Windows Server 2008 R2 Foundation Windows Server 2008 R2 Standard Microsoft Windows XP Home Edition Microsoft Windows XP Professional Microsoft Windows XP Professional x64 Edition Microsoft Windows XP Tablet PC Edition Windows Server 2008 Datacenter Windows Server 2008 Enterprise Windows Server 2008 for Itanium-Based Systems Windows Server 2008 Foundation Windows Vista Business Windows Vista Enterprise Windows Vista Home Basic Windows Vista Home Premium Windows Vista Starter Windows Vista Ultimate Windows Server 2008 Datacenter without Hyper-V Windows Server 2008 Enterprise without Hyper-V Windows Server 2008 R2 Service Pack 1 Windows Server 2008 Service Pack 2 Windows Server 2008 Standard without Hyper-V Windows Vista Business 64-bit Edition Windows Vista Enterprise 64-bit Edition Windows Vista Home Basic 64-bit Edition Windows Vista Home Premium 64-bit Edition Windows Vista Service Pack 2 Windows Vista Ultimate 64-bit Edition Windows 7 Service Pack 1 Еще. Меньше
Эта статья предназначена для продвинутых пользователей, администраторов и ИТ-специалистов.
Импорт регистрационных записей (.reg) файлов является особенностью Regedit.exe и не поддерживается Regedt32.exe. Вы можете использовать Regedit.exe для внесения некоторых изменений в реестр на Windows NT 4.0 или Windows 2000 основе компьютера, но некоторые изменения требуют Regedt32.exe. Например, нельзя добавлять или изменять REG_EXPAND_SZ или REG_MULTI_SZ значения с помощью Regedit.exe на windows NT 4.0 или windows 2000-компьютер. Regedt32.exe является основным редактором реестра для Windows NT 4.0 и Windows 2000. Если необходимо использовать Regedt32.exe, вы не можете использовать файлы регистрационных записей (.reg) для изменения реестра. Для получения дополнительной информации о различиях между Regedit.exe и Regedt32.exe, нажмите следующий номер статьи, чтобы просмотреть статью в базе знаний Microsoft:
141377 Различия между Regedit.exe и Regedt32.exe
Синтаксис . Reg Файлы
Файл .reg имеет следующий синтаксис: Линия реестраEditorВерсиябланкаRegistryPath1DataItemName1""DataType1:DataValue1" DataItemName2"я"DataType2:DataValue2" Пустая линияRegistryPath2DataItemName3""DataType3:DataValue3" Где: RegistryEditorVersion является либо "Windows реестра редактор версия 5.00" для Windows 2000, Windows XP, и Windows Server 2003, или "REGEDIT4" для Windows 98 и Windows NT 4.0. Заголовок "REGEDIT4" также работает на компьютерах на базе Windows 2000, Windows XP и Windows Server 2003. Пустая линия — это пустая линия. Это определяет начало нового пути реестра. Каждый ключ или подключья — это новый путь реестра. Если у вас есть несколько ключей в файле .reg, пустые строки могут помочь вам изучить и устранить неполадки содержимого. RegistryPathx — это путь подключаемого ключа, который содержит первое значение, которое вы импортируете. Закройте путь в квадратные скобки и разделите каждый уровень иерархии на задний план. Например:
[HKEY_LOCAL_ MACHINE\SOFTWARE\Policies\Microsoft\Windows\System]Файл .reg может содержать несколько путей регистрации. Если нижняя часть иерархии в отчете пути не существует в реестре, создается новый подключ. Содержимое файлов реестра отправляется в реестр в порядке ввода. Поэтому, если вы хотите создать новый подключ с другим подключкой под ним, вы должны ввести строки в правильном порядке. DataItemNamex — это название элемента данных, который необходимо импортировать. Если элемент данных в файле не существует в реестре, файл .reg добавляет его (со значением элемента данных). Если элемент данных существует, значение в файле .reg перезаписывает существующее значение. Отметки котировок прививают имя элемента данных. Равный знак (к) сразу же следует за именем элемента данных. DataTypex — это тип данных для значения реестра и сразу же следует равному знаку. Для всех типов данных, кроме REG_SZ (значение строки), толстой кишки сразу же следует типу данных. Если тип данных REG_SZ, не включайте значение типа данных или толстой кишки. В этом случае Regedit.exe предполагает REG_SZ для типа данных. В следующей таблице перечислены типичные типы данных реестра:
Чувствительность к регистру определяет, обрабатываются ли прописные (FOO.txt) и строчные буквы (foo.txt) как уникальные (с учетом регистра) или эквивалентные (без учета регистра) в имени файла или каталога.
- С учетом регистра: FOO.txt ≠ foo.txt ≠ Foo.txt
- Без учета регистра: FOO.txt = foo.txt = Foo.txt
Аннотация
Внимание! В этом разделе, описании способа или задачи содержатся сведения об изменении реестра. Но неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому такие действия следует выполнять очень внимательно. Чтобы обеспечить дополнительную защиту, создайте резервную копию реестра перед его изменением. Это позволит восстановить реестр при возникновении неполадок. Дополнительные сведения о создании резервной копии и восстановлении реестра см. в следующей статье базы знаний Майкрософт:
322756 Как создать резервную копию и восстановить реестр в WindowsЭта пошаговая статья описывает, как добавлять, изменять или удалять подки и значения реестра с помощью файла Регистрационные записи (.reg). Regedit.exe использует файлы .reg для импорта и экспорта подключ и значений реестра. Эти файлы .reg можно использовать для удаленного распространения изменений реестра на нескольких компьютерах на базе Windows. При запуске файла .reg содержимое файла сливается в локальный реестр. Поэтому необходимо распространять файлы .reg с осторожностью. вернуться к вершине
Метод 2. Восстановление всего реестра
Чтобы восстановить весь реестр, восстановите состояние системы из резервной копии. Дополнительные сведения о восстановлении состояния системы из резервной копии см. в статье Использование резервной копии для защиты данных и восстановления файлов и папок на компьютере в Windows XP и Windows Vista.
При резервном копировании состояния системы также создаются обновленные копии файлов реестра в папке %SystemRoot%\Repair .
Устранение неполадок
Изменение чувствительности регистра на диске, подключенном к распределению WSL
Диски в формате NTFS, подключенные к дистрибутиву WSL, по умолчанию не учитывают регистр. Изменение конфиденциальности регистра для каталога на диске, подключенного к дистрибутиву WSL (т. е. Ubuntu) выполните те же действия, что описано выше для файловой системы Windows. (Диски EXT4 по умолчанию будут учитывать регистр).
Чтобы включить учет регистра в каталоге (FOO ≠ foo), используйте команду:
Чтобы отключить учет регистра в каталоге и вернуться к значению по умолчанию без учета регистра (FOO = foo), используйте следующую команду:
Если вы изменяете флаг конфиденциальности регистра в существующем каталоге для подключенного диска во время работы WSL, убедитесь, что WSL не имеет ссылок на этот каталог или в противном случае изменение не будет эффективным. Это означает, что каталог не должен быть открыт процессами WSL, включая использование каталога (или его потомков) в качестве текущего рабочего каталога.
Как настроить нужные нам пины GPIO для того чтобы можно было включить светодиод?
Итак, мы знаем что нужные нам светодиоды подключены к порту GPIOC к пинам PC8 и PC9. Нам нужно настроить их в такой режим, чтобы загорался светодиод. Хотелось бы сразу же сделать оговорку, что порты GPIO мы рассмотрим подробнее в другой статье и тут мы сконцентрируемся именно на работе с регистрами.
Первым делом нам нужно перевести режим работы пинов PC8 и PC9 в режим Output. Остальные параметры порта можно оставить по умолчанию. Переходим в Reference Manual в раздел 9. General-purpose I/Os (GPIO) и открываем пункт отвечающий за режим работы пинов порта GPIO и видим что за этот параметр отвечает регистр MODER:
Судя по описанию, для установки пинов PC8 и PC9 в режим Output мы должны записать 01 в соответствующие поля регистра GPIOC.
Это можно сделать через прямую установку с помощью числовых значений:
-
Формируем число для записи:
После данной инструкции наши пины PC8 и PC9 перейдут в режим Output.
Ссылки
Для получения дополнительных сведений посетите указанные ниже веб-сайты:
Каталог Windows Server протестированных продуктов — это справочник по продуктам, которые были протестированы на совместимость с Windows Server.
Data Protection Manager (DPM) является ключевым членом семейства продуктов управления Microsoft System Center и предназначен для помощи ИТ-специалистам в управлении средой Windows. DPM — это новый стандарт резервного копирования и восстановления Windows, который обеспечивает непрерывную защиту данных для приложений Майкрософт и файловых серверов, использующих легко интегрированный диск и ленточный носитель. Для получения дополнительной информации о том, как создать резервную копию и восстановить реестр, см. статью Сведения о резервном копировании и восстановлении реестра в Windows XP и Windows Vista.
Intel 8086 – один из самых влиятельных из когда-либо созданных компьютерных чипов. Он создал архитектуру x86, доминирующую в современных настольных и серверных компьютерах. Я занимался реверс-инжинирингом 8086 на основе фотографий кристаллов, и в данной статье я опишу реализацию регистрового файла (набора регистров).
Кристалл 8086. Отмечено место хранения регистров. Верхние регистры используются блоком интерфейса шины для доступа к памяти, а нижние регистры общего назначения используются исполнительным блоком. Буфер команд – это 6-байтная очередь, состоящая из заранее запрошенных команд.
На фото дано изображение процессора 8086 под микроскопом. Виден металлический слой сверху чипа, под которым прячется кремний. Расположенные по внешнему краю соединительные провода соединяют площадки на кристалле с 40 внешними контактами чипа.
Рамкой обведены пятнадцать 16-битовых регистров 8086 и шесть байтов очереди предварительного запроса команд (предвыборки кода). Регистры занимают значительную часть кристалла, хотя в сумме их наберётся всего на 36 байт. Из-за ограничений по площади у первых микропроцессоров было относительно небольшое количество регистров. Для сравнения, у современных чипов процессоров есть килобайты регистров и мегабайты кэшей.
8086 был одним из самых ранних микропроцессоров, реализовавших предвыборку кода, однако у Motorola 68000 (1979) немного раньше появился буфер предвыборки на 4 байта. В мейнфреймах предвыборка существовала у IBM Stretch (1961), CDC 6600 (1964) и IBM System/360 Model 91 (1966).
Количество регистров у современного процессора подсчитать сложно. Единственное точное число, найденное мною, содержалось в книге "Анатомия высокоскоростного микропроцессора" (1997), подробно описывающей процессор AMD K6. Из-за переименования регистров у современных процессоров физических регистров гораздо больше, чем архитектурных (тех, что видны программисту), а количество физических регистров в документации не указывается. У K6, кроме восьми регистров х86 общего назначения, было 16 микроархитектурных рабочих регистров для переименования.
У процессоров с поддержкой AVX-512 есть 32 512-битовых регистра, то есть для одной этой функции зарезервировано 2 кБ регистров. В таких случаях размер регистров подсчитать ещё сложнее. Что до размера кэша, то у передовых процессоров его объём доходит до 77 МБ.
Как включить тактирование на нужный порт GPIO?
В целом, любая работа с периферией в микроконтроллерах STM32 сводится к стандартной последовательности действий:
- Включение тактирования соответствующего периферийного модуля. Осуществляется это через регистр RCC путем подачи тактового сигнала напрямую с шины на которой находится данный модуль. По умолчанию тактирование всей периферии отключено для минимизации энергопотребления.
- Настройка через управляющие регистры, путем изменения параметров специфичных для конкретного периферийного устройства
- Непосредственный запуск и использование результатов работы модуля
Внимание! Вопрос касательно системы тактирования, её настройки и использования мы подробно рассмотрим в отдельной статье.
Найти к какой шине подключен наш порт GPIOC можно найти в Datasheet'е на наш МК в разделе Memory Mapping в Таблице 16. STM32F051xx peripheral register boundary addresses.
Как вы уже успели заметить, необходимая нам шина именуется как AHB2. Для того чтобы подробнее ознакомиться с регистром, в котором включается тактирование на нужный нам порт GPIO на шине AHB, надо перейти в соответствующий раздел в Reference Manual. По названию регистров мы можем определить тот, который нужен нам:
Переходим в этот пункт, и мы видим наш 32-битный регистр, его адрес смещения, значение по умолчанию, способ доступа к регистру и перечисление того, за что отвечает каждый бит в регистре.
Смотрим на таблицу и видим нечто напоминающее опции включения тактирования на портах GPIO. Переходим к описанию и находим нужную нам опцию:
Соответственно если мы установим 19 бит в значение «1» то это обеспечит включение тактирования на порт I/O C – то есть на наш GPIOC. К тому же — нам нужно включить отдельно один бит из группы, не затрагивая остальные т.к. мы не должны мешать и изменять без надобности другие настройки.
Основываясь на материалах прошлого урока, мы знаем что для того чтобы выставить определенный бит нужно используя логическую операцию «ИЛИ» сложить текущее значение регистра с маской которая содержит те биты которые необходимо включить. Например, сложим значение регистра RCC->AHBENR по умолчанию, т.е. 0x14 и число 0x80000 тем самым включим тактирование GPIOC путем установки 19 бита:
Каким образом мы можем это сделать из программы? Всё достаточно просто. В данном случае у нас два варианта:
- Запись в регистр напрямую численного значения регистра напрямую через его адрес.
- Настройка с использованием библиотеки CMSIS
То есть, мы могли бы обращаться к адресам регистров напрямую по адресу и написать так:
Второй вариант мне кажется наиболее привлекательным, т.к. библиотека CMSIS организована таким способом, что регистру можно обращаться, используя только его название. Препроцессор в ходе обработки текста программы перед компиляцией подставит все цифровые значения адреса регистра автоматически. Давайте разберем этот вопрос чуть подробнее.
Предлагаю открыть наш проект, который мы сделали в первом занятии, или скачайте предварительно подготовленый отсюда и удалите все содержимое программы оставив только подключенный заголовочный файл, функцию main() и инструкцию для включения тактирования (она нам понадобится для подробного разбора кода).
Наш код будет выглядеть следующим образом:
Давайте для ознакомления копнём вглубь библиотеки CMSIS.
Для того, чтобы быстро перейти к месту где объявлена та или иная константа или переменная в Keil реализована удобная функция. Кликаем правой кнопкой по необходимой нам константе, например, на RCC:
И мы переносимся в глубины библиотеки CMSIS, в которой увидим, что все регистры доступные для управления программным способом имеют вид TypeDef-структур, в том числе и наш RCC:
Провалившись подобным образом в RCC_TypeDef мы увидим структуру в которой описаны все поля нашего регистра:
Соответственно, мы можем спокойно обращаться к нужному нам регистру записью вида PERIPH_MODULE->REGISTER и присваивать ему определенное значение.
Помимо мнемонического обозначения регистров есть так же обозначения конкретных битов. Если мы провалимся к объявлению параметра RCC_AHBENR_GPIOCEN из нашей программы, то так же увидим объявление всех параметров:
Таким образом, используя библиотеку CMSIS у нас получается лаконичная читаемая запись нужного нам параметра в регистр, через установку которого мы запускаем тактирование на нужный нам порт:
В качестве задания: определите используя возможности Keil, каким образом получился адрес регистра RCC->AHBENR как 0x40021014.
Восстановление реестра
Чтобы восстановить реестр, используйте соответствующий метод.
Ошибка: для этой операции требуется локальный том NTFS.
Атрибут конфиденциальности регистра можно задать только для каталогов в файловой системе в формате NTFS. Каталоги в файловой системе WSL (Linux) по умолчанию чувствительны к регистру (и не могут быть нечувствительными к регистру с помощью средства fsutil.exe).
Изменение реестра
Чтобы изменить данные реестра, программа должна использовать функции реестра, определенные в разделе Функции реестра.
Администраторы могут изменять реестр с помощью редактора реестра (Regedit.exe или Regedt32.exe), групповой политики, системной политики, файлов реестра (REG) или выполнения сценариев, таких как файлы сценариев VisualBasic.
Использование инструментария управления Windows
Инструментарий управления Windows (WMI) является компонентом операционной системы Microsoft Windows и реализацией управления предприятием через Интернет (WBEM). WBEM — это отраслевая инициатива по разработке стандартной технологии для обеспечения доступа к сведениям об управлении в корпоративной среде. WMI можно использовать для автоматизации административных задач (например, изменение реестра) в корпоративной среде. WMI можно использовать на языках сценариев, которые имеют подсистему в Windows и обрабатывают объекты Microsoft ActiveX. Вы также можете использовать программу командной строки WMI (Wmic.exe) для изменения реестра Windows.
Дополнительные сведения о WMI см. в статье Инструментарий управления Windows.
Различия между Windows и учетом регистра Linux
При работе с файлами и каталогами Linux и Windows может потребоваться настроить способ обработки конфиденциальности регистра.
- Windows файловая система обрабатывает имена файлов и каталогов как нечувствительные к регистру. FOO.txt и foo.txt будут рассматриваться как эквивалентные файлы.
- Файловая система Linux обрабатывает имена файлов и каталогов как чувствительные к регистру. FOO.txt и foo.txt будут рассматриваться как отдельные файлы.
Файловая система Windows поддерживает настройку учета регистра с флагами атрибутов для каждого каталога. Хотя стандартное поведение не учитывает регистр, можно назначить флаг атрибута для учета регистра каталога, чтобы он распознал файлы и папки Linux, которые могут отличаться только по регистру.
Это может быть особенно верно при подключении дисков к файловой системе подсистема Windows для Linux (WSL). При работе в файловой системе WSL вы используете Linux, поэтому по умолчанию файлы и каталоги обрабатываются как чувствительные к регистру.
В прошлом, если у вас были файлы, имена которых отличаются только по регистру, эти файлы не могут быть доступны Windows, так как Windows приложения обрабатывают файловую систему как нечувствительные регистры и не могут различать файлы, имена которых различаются только в случае. Хотя Windows проводник будет отображать оба файла, только один откроется независимо от выбранного.
Проверка конфиденциальности текущего регистра
Чтобы проверить, учитывает ли каталог регистр в файловой системе Windows, выполните следующую команду:
Замените путь к файлу. Для каталога в файловой системе Windows (NTFS) будет выглядеть следующим образом: C:\Users\user1\case-test или если вы уже находитесь в каталоге user1 , можно просто запустить: fsutil.exe file setCaseSensitiveInfo case-test
Наследование конфиденциальности регистра
При создании новых каталогов эти каталоги наследуют чувствительность регистра от родительского каталога.
Существует исключение из этой политики наследования при запуске в режиме WSL 1. Если распределение выполняется в режиме WSL 1, флаг конфиденциальности регистра для каждого каталога не наследуется; каталоги, созданные в каталоге с учетом регистра, не автоматически чувствительны к регистру. Необходимо явно пометить каждый каталог как чувствительный к регистру.
Использование групповой политики
В консоли управления (MMC) размещены средства администрирования, которые можно использовать для администрирования сетей, компьютеров, служб и других системных компонентов. Оснастка групповой политики MMC позволяет администраторам определять параметры политики, применяемые к компьютерам или пользователям. Групповую политику можно реализовать на локальных компьютерах с помощью Gpedit.msc — локальной оснастки групповой политики MMC. Групповую политику можно реализовать в Active Directory с помощью оснастки «Пользователи и компьютеры Active Directory» MMC. Дополнительные сведения об использовании групповой политики см. в разделах справки в соответствующей оснастке групповой политики MMC.
В моем каталоге есть файлы, которые являются смешанными и требуют конфиденциальности регистра, но Windows средства FS не распознают эти файлы.
Чтобы использовать Windows средства файловой системы для работы в каталоге Linux, содержающем файлы смешанного регистра, необходимо создать новый каталог и задать для него учет регистра, а затем скопировать файлы в этот каталог (с помощью клона Git или untar). Файлы останутся смешанными. (Обратите внимание, что если вы уже попытались переместить файлы в каталог без учета регистра и возникли конфликты, скорее всего, некоторые файлы были перезаписаны и больше не будут доступны.)
Описание реестра
В словаре компьютерных терминов Майкрософт (5-я редакция) реестр определяется следующим образом:
Центральная иерархическая база данных, используемая в Windows 98, Windows CE, Windows NT и Windows 2000, используется для хранения сведений, необходимых для настройки системы для одного или нескольких пользователей, приложений и аппаратных устройств.
Реестр содержит сведения, на которые Windows постоянно ссылается во время операции, такие как профили для каждого пользователя, приложения, установленные на компьютере, типы документов, которые могут создаваться, параметры таблицы свойств для папок и значков приложений, оборудование, которое установлено в системе, и используемые порты.
Реестр заменяет большинство текстовых INI-файлов, используемых в файлах конфигурации Windows 3.x и MS-DOS, таких как Autoexec.bat и Config.sys. Хотя реестр является общим для нескольких операционных систем Windows, между ними существуют некоторые различия. Куст реестра — это группа ключей, подразделов и значений в реестре с набором вспомогательных файлов, содержащих резервные копии данных. Вспомогательные файлы для всех кустов, кроме HKEY_CURRENT_USER, находятся в папке %SystemRoot%\System32\Config в Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003 и Windows Vista. Вспомогательные файлы для HKEY_CURRENT_USER находятся в папке %SystemRoot%\Profiles\Username . Расширения имен файлов в этих папках указывают тип содержащихся в них данных. Кроме того, отсутствие расширения иногда может указывать на тип содержащихся в них данных.
Куст реестра | Вспомогательные файлы |
---|---|
HKEY_LOCAL_MACHINE\SAM | Sam, Sam.log, Sam.sav |
HKEY_LOCAL_MACHINE\Security | Security, Security.log, Security.sav |
HKEY_LOCAL_MACHINE\Software | HKEY_LOCAL_MACHINE\Software |
HKEY_LOCAL_MACHINE\System | System, System.alt, System.log, System.sav |
HKEY_CURRENT_CONFIG | System, System.alt, System.log, System.sav, Ntuser.dat, Ntuser.dat.log |
HKEY_USERS\DEFAULT | Default, Default.log, Default.sav |
В Windows 98 файлам реестра присвоены имена User.dat и System.dat. В Windows Millennium Edition файлам реестра присвоены имена Classes.dat, User.dat и System.dat.
Функции безопасности в Windows позволяют администратору управлять доступом к разделам реестра.
В следующей таблице перечислены предопределенные разделы, используемые системой. Максимальная длина имени раздела: 255 символов.
Папка или предопределенный раздел | Описание |
---|---|
HKEY_CURRENT_USER | Содержит корневой каталог сведений о конфигурации для пользователя, который в настоящее время выполнил вход. Здесь хранятся папки пользователя, образец экрана и параметры панели управления. Эти сведения связаны с профилем пользователя. Этот раздел иногда сокращается как HKCU. |
HKEY_USERS | Содержит все активно загруженные профили пользователей на компьютере. HKEY_CURRENT_USER является подразделом HKEY_USERS. HKEY_USERS иногда сокращается как HKU. |
HKEY_LOCAL_MACHINE | Содержит сведения о конфигурации, относящиеся к компьютеру (для любого пользователя). Этот раздел иногда сокращается как HKLM. |
HKEY_CLASSES_ROOT | Является подразделом HKEY_LOCAL_MACHINE\Software . Хранимая здесь информация гарантирует, что при открытии файла с помощью Windows Explorer откроется правильная программа. Этот раздел иногда сокращается как HKCR. Начиная с Windows 2000, эти сведения хранятся в разделах HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER. Раздел HKEY_LOCAL_MACHINE\Software\Classes содержит параметры по умолчанию, которые могут применяться ко всем пользователям на локальном компьютере. Раздел HKEY_CURRENT_USER\Software\Classes содержит параметры, которые переопределяют параметры по умолчанию и применяются только к интерактивному пользователю. Раздел HKEY_CLASSES_ROOT обеспечивает представление реестра, который объединяет сведения из этих двух источников. HKEY_CLASSES_ROOT также обеспечивает это объединенное представление для программ, предназначенных для более ранних версий Windows. Чтобы изменить параметры интерактивного пользователя, необходимо внести изменения в раздел HKEY_CURRENT_USER\Software\Classes вместо HKEY_CLASSES_ROOT. Чтобы изменить параметры по умолчанию, необходимо внести изменения в раздел HKEY_LOCAL_MACHINE\Software\Classes . Если запись разделов осуществляется в раздел реестра в разделе HKEY_CLASSES_ROOT, система сохраняет сведения в разделе HKEY_LOCAL_MACHINE\Software\Classes . Если запись значений осуществляется в раздел реестра в разделе HKEY_CLASSES_ROOT, при этом раздел реестра уже существует в разделе HKEY_CURRENT_USER\Software\Classes , система будет хранить сведения там, а не в разделе HKEY_LOCAL_MACHINE\Software\Classes . |
HKEY_CURRENT_CONFIG | Содержит сведения о профиле оборудования, используемом локальным компьютером при запуске операционной системы. |
Реестр в 64-разрядных версиях Windows XP, Windows Server 2003 и Windows Vista делится на 32-разрядные и 64-разрядные разделы. Многие 32-разрядные разделы имеют те же имена, что и 64-разрядные разделы, и наоборот. 64-разрядная версия редактора реестра по умолчанию, включенная в 64-разрядные версии Windows XP, Windows Server 2003 и Windows Vista, отображает 32-разрядные разделы под узлом HKEY_LOCAL_MACHINE\Software\WOW6432Node . Дополнительные сведения о просмотре реестра в 64-разрядных версиях Windows см. в статье Просмотр системного реестра с помощью 64-разрядных версий Windows.
В следующей таблице перечислены типы данных, которые в настоящее время определены и используются Windows. Максимальная длина имени значения выглядит следующим образом:
- Windows Server 2003, Windows XP и Windows Vista: 16 383 символа
- Windows 2000: 260 символов ANSI или 16 383 символа Юникода
- Windows Millennium Edition/Windows 98/Windows 95: 255 символов
Длинные значения (более 2048 байт) должны храниться в виде файлов с именами файлов, хранящимися в реестре. Это помогает реестру работать эффективно. Максимальный размер значения выглядит следующим образом:
- Windows NT 4.0/Windows 2000/Windows XP/Windows Server 2003/Windows Vista: доступная память
- Windows Millennium Edition/Windows 98/Windows 95: 16 300 байт
Для общего размера всех значений раздела существует ограничение в 64 КБ.
Имя | Тип данных | Описание |
---|---|---|
Двоичное значение | REG_BINARY | Необработанные двоичные данные. Большинство сведений о компонентах оборудования хранятся в виде двоичных данных и отображаются в редакторе реестра в шестнадцатеричном формате. |
Параметр DWORD | REG_DWORD | Данные, представленные числом длиной 4 байта (32-разрядное целое число). Многие параметры драйверов и служб устройств имеют этот тип и отображаются в редакторе реестра в двоичном, шестнадцатеричном или десятичном формате. Связанные значения DWORD_LITTLE_ENDIAN (младший значащий байт находится по самому младшему адресу) и REG_DWORD_BIG_ENDIAN (младший значащий байт находится по самому старшему адресу). |
Расширяемый строковый параметр | REG_EXPAND_SZ | Строка данных переменной длины. Этот тип данных включает переменные, которые разрешены при использовании данных программой или службой. |
Многострочный параметр | REG_MULTI_SZ | Несколько строк. Значения, содержащие списки или несколько значений в форме, доступной для чтения пользователями, обычно являются этим типом. Записи разделяются пробелами, запятыми или другими знаками. |
Строковый параметр | REG_SZ | Текстовая строка фиксированной длины. |
Двоичное значение | REG_RESOURCE_LIST | Ряд вложенных массивов, предназначенных для хранения списка ресурсов, используемых драйвером аппаратного устройства или одним из физических устройств, которые он контролирует. Эти данные обнаруживаются и записываются системой в дерево \ResourceMap и отображаются в редакторе реестра в шестнадцатеричном формате в виде двоичного значения. |
Двоичное значение | REG_RESOURCE_REQUIREMENTS_LIST | Ряд вложенных массивов, предназначенных для хранения списка возможных аппаратных ресурсов, используемых драйвером устройства или одного из физических устройств, которые он контролирует. Система записывает подмножество этого списка в дерево \ResourceMap. Эти данные обнаруживаются системой и отображаются в редакторе реестра в шестнадцатеричном формате в виде двоичного значения. |
Двоичное значение | REG_FULL_RESOURCE_DESCRIPTOR | Ряд вложенных массивов, предназначенных для хранения списка ресурсов, используемых физическим аппаратным устройством. Эти данные обнаруживаются и записываются системой в дерево \HardwareDescription и отображаются в редакторе реестра в шестнадцатеричном формате в виде двоичного значения. |
Нет | REG_NONE | Данные без определенного типа. Эти данные записываются в реестр системой или приложениями и отображаются в редакторе реестра в шестнадцатеричном формате в виде двоичного значения. |
Ссылка | REG_LINK | Строка Юникода, именуемая символьной ссылкой. |
Параметр QWORD | REG_QWORD | Данные, представленные числом, которое является 64-разрядным целым числом. Эти данные отображаются в редакторе реестра в виде двоичного значения и были введены в Windows 2000. |
Изменение конфиденциальности регистра
Поддержка конфиденциальности регистра в каталоге началась в Windows 10 сборке 17107. В Windows 10 сборке 17692 была обновлена поддержка, включив проверку и изменение флага конфиденциальности регистра для каталога из WSL. Конфиденциальность регистра предоставляется с помощью расширенного атрибута с именем system.wsl_case_sensitive . Значение этого атрибута будет равно 0 для каталогов без учета регистра и 1 для каталогов с учетом регистра.
Для изменения конфиденциальности регистра каталога требуется выполнение повышенных разрешений (запуск от имени администратора). Для изменения флага конфиденциальности регистра также требуются разрешения "Запись атрибутов", "Создание файлов", "Создание папок" и "Удаление вложенных папок и файлов" в каталоге. Дополнительные сведения об этом см. в разделе по устранению неполадок.
Чтобы изменить каталог в файловой системе Windows таким образом, чтобы он был учитывает регистр (FOO ≠ foo), запустите PowerShell от имени администратора и используйте команду:
Чтобы изменить каталог в файловой системе Windows обратно на значение по умолчанию без учета регистра (FOO = foo), запустите PowerShell от имени администратора и используйте команду:
Каталог должен быть пустым, чтобы изменить атрибут флага конфиденциальности регистра в этом каталоге. Нельзя отключить флаг конфиденциальности регистра в каталоге, содержав папки и файлы, имена которых отличаются только по регистру.
Использование редактора реестра
При неправильном изменении реестра с использованием редактора реестра или другого способа могут случиться серьезные проблемы. Для решения этих проблем может потребоваться переустановка операционной системы. Компания Microsoft не может гарантировать, что эти проблемы могут быть решены. Вносите изменения в реестр на ваш страх и риск.
Редактор реестра можно использовать для выполнения следующих действий:
- Поиск поддерева, раздела, подраздела или значения
- Добавление подраздела или значения
- Изменение значения
- Удаление подраздела или значения
- Переименование подраздела или значения
В области навигации редактора реестра отображаются папки. Каждая папка представляет предопределенный раздел на локальном компьютере. При доступе к реестру удаленного компьютера отображаются только два предопределенных раздела: HKEY_USERS и HKEY_LOCAL_MACHINE.
Создание резервной копии реестра
Перед изменением реестра экспортируйте разделы в реестр, который планируется изменить, или создайте резервную копию всего реестра. В случае возникновения проблемы можно выполнить действия, описанные в разделе Восстановление реестра, чтобы восстановить реестр до предыдущего состояния. Чтобы создать резервную копию всего реестра, используйте программу резервного копирования для резервного копирования состояния системы. Состояние системы включает реестр, базу данных регистрации класса COM+ и файлы загрузки. Дополнительные сведения об использовании программы резервного копирования для резервного копирования состояния системы см. в следующих статьях:
Использование файла реестра (REG)
Создайте файл реестра (REG), содержащий изменения реестра, а затем запустите REG-файл на компьютере, где необходимо внести изменения. REG-файл можно запустить вручную или с помощью сценария входа. Дополнительные сведения см. в разделе Как создавать, изменять или удалять подразделы и значения реестра с помощью файла реестра (REG).
Ошибка: каталог не пуст
Вы не можете изменить параметр конфиденциальности регистра в каталоге, содержавшемся в других файлах или каталогах. Попробуйте создать каталог, изменить параметр, а затем скопировать в него файлы смешанного регистра.
Ошибка: отказано в доступе
Убедитесь, что у вас есть разрешения "Запись атрибутов", "Создать файлы", "Создать папки" и "Удалить вложенные папки и файлы" в каталоге, необходимом для изменения учета регистра. Чтобы проверить эти параметры, откройте каталог в Windows проводник (из командной строки используйте команду: explorer.exe . ). Щелкните каталог правой кнопкой мыши и выберите "Свойства", чтобы открыть окно свойств документа, а затем выберите "Изменить", чтобы просмотреть или изменить разрешения для каталога.
Куда подключены наши светодиоды? К какому выводу микроконтроллера?
Для того, чтобы посмотреть где что находится на плате Discovery, а в частности, нужные нам светодиоды — нужно открыть Schematic-файл, либо тот который мы скачали с сайта ST, либо прямо из Keil:
Открыв Schematic мы увидим схему всего того, что есть на плате — схему ST-Link, обвязку всей периферии и многое другое. На текущий момент нас интересуют два светодиода, ищем их обозначение:
Как мы видим, наши светодиоды подключены к порту GPIOC на 8 и 9 пин.
Параметры конфиденциальности регистра для подключения диска в файле конфигурации WSL
Конфиденциальность регистра может управляться при подключении диска на подсистема Windows для Linux с помощью файла конфигурации WSL. Каждый установленный дистрибутив Linux может иметь собственный файл конфигурации WSL. /etc/wsl.conf Дополнительные сведения о подключении диска см. в начало работы подключении диска Linux в WSL 2.
Чтобы настроить параметр конфиденциальности регистра wsl.config в файле при подключении диска, выполните следующие действия.
- Откройте дистрибутив Linux, который вы будете использовать (т. е. Ubuntu).
- Измените каталоги до тех пор, пока не увидите etc папку (для этого может потребоваться переход cd .. из home каталога).
- Выведите список файлов в каталоге etc , чтобы узнать, существует ли wsl.conf файл (используйте ls команду или explorer.exe . просмотрите каталог с помощью Windows проводник).
- wsl.conf Если файл еще не существует, его можно создать с помощью: sudo touch wsl.conf или путем запуска sudo nano /etc/wsl.conf , который создаст файл после сохранения из редактора Nano.
- Для добавления в wsl.config файл доступны следующие параметры:
Значение по умолчанию: dir для включения конфиденциальности регистра для каждого каталога.
Конфиденциальность регистра недоступна (все каталоги на подключенных дисках NTFS не учитывают регистр): off
Учитывайте регистр всех каталогов на диске (NTFS): force
Этот параметр поддерживается только для подключения дисков в дистрибутивах Linux, работающих как WSL 1, и может потребоваться ключ регистрации. Чтобы добавить ключ регистрации, можно использовать эту команду из командной строки reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1 с повышенными привилегиями (администратор):
После внесения изменений в wsl.conf файл потребуется перезапустить WSL, чтобы эти изменения вступили в силу. Вы можете перезапустить WSL с помощью команды: wsl --shutdown
Чтобы подключить диск (который использует подключаемый модуль файловой системы DrvFs, чтобы сделать диск доступным в разделе /mnt, например /mnt/c, /mnt/d и т. д.) с определенным параметром конфиденциальности регистра для всех дисков, используйте /etc/wsl.conf , как описано выше. Чтобы задать параметры подключения по умолчанию для одного конкретного диска, используйте /etc/fstab файл , чтобы указать эти параметры. Дополнительные параметры конфигурации WSL см. в разделе "Настройка параметров запуска для каждого дистрибутива с помощью wslconf".
Содержание
Настройка конфиденциальности регистра с помощью Git
Система управления версиями Git также имеет параметр конфигурации, который можно использовать для настройки учета регистра для файлов, с которыми вы работаете. Если вы используете Git, вам может потребоваться изменить git config core.ignorecase этот параметр.
Чтобы задать для Git учет регистра (FOO.txt ≠ foo.txt), введите:
git config core.ignorecase false
Чтобы задать Git без учета регистра (FOO.txt = foo.txt), введите:
git config core.ignorecase true
Установка этого параметра на значение false в файловой системе без учета регистра может привести к запутанным ошибкам, ложным конфликтам или повторяющимся файлам.
Как регистры реализуются в кремнии
Начну с описания того, как 8086 создаётся из N-МОП транзисторов. Затем объясню, как делается инвертор, как при помощи инверторов хранятся одиночные биты, и как делается регистр.
8086, как и другие чипы той эпохи, создавались на основе транзисторов типа N-МОП. Эти чипы состояли из кремниевой подложки, в которую при помощи диффузии внедряли примеси из мышьяка или бора, формировавшие транзисторы. Находящиеся над кремнием проводники из поликремния формировали вентили транзисторов и соединяли все компоненты друг с другом. Находившийся ещё выше металлический слой содержал дополнительные проводники. Для сравнения, современные процессоры используют технологию КМОП, комбинирующую N-МОП и P-МОП транзисторы, и содержат множество металлических слоёв.
На схеме ниже показан инвертор, состоящий из N-МОП транзистора и резистора. При низком входном напряжении транзистор выключен, поэтому подтягивающий резистор подтягивает выход вверх. При высоком входном напряжении транзистор включается, соединяет землю и выход, подтягивая выход вниз. Таким образом входящий сигнал инвертируется.
На самом деле, подтягивающий резистор в вентиле N-МОП представляет собой транзистор особого рода. Работающий в режиме обеднения транзистор ведёт себя, как резистор, будучи при этом более компактным и эффективным.
На схеме показано, как из транзистора и резистора получается инвертор. На фото показана реализация на чипе. Металлический слой удалён, чтобы было видно кремний и поликремний.
На фото выше видно, как физически сделан инвертор у 8086. Розоватые участки – это кремний с примесями, делающими его токопроводящим, а линии медного цвета – это поликремний сверху. Транзистор появляется там, где поликремний пересекается с кремнием. Поликремний формирует вентиль транзистора, а участки кремния с двух сторон дают исток и сток. Большой прямоугольник поликремния формирует подтягивающий резистор между +5 В и выходом. Таким образом, схема чипа совпадает со схемой инвертора. Подобные цепи можно рассмотреть под микроскопом и подвергнуть реверс-инжинирингу.
Строительный блок регистра – два инвертора в цепи обратной связи, хранящих один бит (см. ниже). Если на верхнем проводнике 0, правый инвертор выдаст 1 на нижний проводник. Затем левый инвертор выдаст 0 на верхний проводник, завершая цикл. Таким образом цепь оказывается стабильной и «помнит» 0. И наоборот, если на верхнем проводнике 1, она превратится в 0 на нижнем проводнике, и обратно в 1 на верхнем. В итоге цепь может хранить 0 или 1, формируя однобитную память.
У 8086 два спаренных инвертора хранят в регистре один бит. Схема стабильно находится в состоянии 0 или 1.
К паре инверторов добавляются три транзистора, чтобы получилась пригодная для использования ячейка регистра. Один транзистор выбирает ячейку для чтения, второй выбирает ячейку для записи, третий усиливает сигнал при чтении. В центре схемы ниже два инвертора хранят бит. Для чтения бита ток подаётся на красную шину. Это соединяет выход инвертора с разрядной шиной через усиливающий транзистор. Для записи бита ток подаётся на красную шину, соединяющую разрядную шину с инверторами. Подавая высокотоковые сигналы 0 или 1 на разрядную шину (и, соответственно, на хранящийся бит), мы заставляем инверторы переключаться на нужное значение. Отметьте, что разрядная шина используется и для чтения, и для записи.
В других процессорах используются несколько другие ячейки для хранения регистров. 6502 использует дополнительный транзистор в цепи обратной связи инвертора, чтобы разбивать цепь при записи нового значения. Z80 пишет одновременно в оба инвертора, что «облегчает» изменение, однако требует наличия двух проводников для записи. У 8086 есть усиливающий транзистор в каждой ячейке регистра для чтения, а другие процессоры считывают выходной сигнал с обоих инверторов и используют внешний дифференциальный усилитель для усиления сигнала. Базовая ячейка регистра 8086 состоит из 7 транзисторов (7Т), что больше, чем в типичной статичной ячейке RAM, использующей 6 или 4 транзистора, однако она использует только одну разрядную шину, а не две разных. Динамическая память (DRAM) работает гораздо эффективнее, и использует один транзистор и конденсатор, однако без обновления данных они будут утеряны.
Принципиальная схема хранящей бит ячейки регистра. Регистровый файл делается из массива таких ячеек.
Регистровый файл состоит из матрицы ячеек регистров, подобных описанному выше. Ширина матрицы составляет 16 ячеек, поскольку в регистрах хранятся 16-битные значения. Каждый регистр расположен по горизонтали, поэтому шина чтения или записи выбирает все ячейки определённого регистра. 16 вертикальных разрядных шин формируют единую шину, поэтому все 16 битов в выбранном регистре читаются и записываются параллельно.
На фото ниже показан увеличенный регистровый файл 8086 общего назначения, и видна матрица регистровых ячеек: 16 столбцов и 8 строк, 8 16-битных регистров. Затем дано увеличение одной регистровой ячейки в файле. Объясню, как реализована эта ячейка.
Фото кристалла 8086 с увеличением нижнего регистрового файла (восьми 16-битовых регистров), а потом и отдельной регистровой ячейки. Чтобы было видно кремниевые структуры, металлический и поликремниевый слои удалены.
8086 делается из кремния с примесями и поликремниевых проводников с металлическими проводниками сверху. На левом фото ниже показаны вертикальные металлические проводники регистровой ячейки. Отмечены земля, питание и проводники разрядной шины (оставшийся проводник пересекает регистровый файл, но не контачит с ним). На фото справа металлический слой растворён, чтобы было видно поликремний и кремний. Шины чтения и записи – это горизонтальные поликремниевые проводники. Поскольку у чипа только один металлический слой, в регистрах для вертикальных шин используется металл, а для горизонтальных – поликремний, чтобы они не пересекались друг с другом). Сквозные соединения металла и кремния видны как более яркие круги на фото с металлом и как кружки на фото с кремнием.
Ячейка хранения регистра. На фото слева показан металлический слой, а справа – соответствующие слои поликремния и кремния.
На диаграмме ниже показано соответствие физической схемы регистровой ячейки с принципиальной. Инверторы состоят из транзистора А и В и регистров. Транзисторы C, D и E формируются отмеченными кусочками поликремния. Разрядная шина не видна, поскольку располагается в металлическом слое. Отметьте, что схема ячейки памяти сильно оптимизирована для минимизации размера. Также отметьте, что транзистор А гораздо меньше других. У инвертора А довольно слабый выходной ток, поэтому разрядная шина может преодолеть его при записи.
Регистровая ячейка от 8086 с соответствующей схемой
Регистровая ячейка на кристалле повторяются не единообразно – каждая вторая ячейка является зеркальным отражением предыдущей. Это увеличивает плотность регистровой ячейки – шина питания, идущая между двумя зеркальными ячейками, может питать их обе (то же касается и земли). Зеркальные повторения уменьшают количество требуемых шин питания и земли в два раза.
Две пары ячеек памяти с разными цепями. У ячеек слева одна шина записи, а справа – отдельные шины записи для левых и правых битов.
Использование пользовательского интерфейса Windows
Мы рекомендуем использовать пользовательский интерфейс Windows для изменения параметров системы вместо изменения реестра вручную. Однако изменение реестра иногда может быть лучшим способом решения проблемы с продуктом. Если проблема задокументирована в базе знаний Майкрософт, будет доступна статья с пошаговыми инструкциями по изменению реестра для решения этой проблемы. Мы рекомендуем точно следовать этим инструкциям.
Как включить светодиод?
Если мы обратим внимание на список доступных регистров для управления портом GPIO то можем увидеть регистр ODR:
Каждый из соответствующих битов отвечает за один из пинов порта. Его структуру вы можете увидеть ниже:
Для того, чтобы обеспечить попеременную смену состояний светодиодов надо с определенным временным интервалом включать/выключать 8 и 9 биты. То есть попеременно присваивать регистру значение 0x100 и 0x200.
Сделать это мы можем через прямое присвоение значений регистру:
Можем через использование определений из библиотеки:
Но так как микроконтроллер работает очень быстро — мы не будем замечать смены состояний светодиодов и визуально будет казаться что они оба горят постоянно. Для того чтобы они действительно моргали попеременно мы внесем искусственную задержку в виде цикла который займет МК бесполезными вычислениями на некоторое время. Получится следующий код:
На этом первоначальное знакомство с регистрами и методами работы с ними мы можем закончить.
Использование сервера сценариев Windows
На сервере сценариев Windows можно выполнять сценарии VBScript и JScript непосредственно в операционной системе. Вы можете создавать файлы VBScript и JScript, использующие методы сервера сценариев Windows для удаления, чтения и записи разделов и значений реестра. Для получения дополнительных сведений об этих методах посетите указанные ниже веб-сайты Майкрософт:
Изменение конфиденциальности регистра файлов и каталогов
Ниже описано, как изменить каталог в файловой системе Windows таким образом, чтобы он учитывал регистр и распознал файлы и папки, отличающиеся только по регистру.
Некоторые Windows приложения, используя предположение, что файловая система не учитывает регистр, не используйте правильный вариант для ссылки на файлы. Например, приложения не редко преобразуют имена файлов для использования всех верхних или нижних регистров. В каталогах, помеченных как чувствительные к регистру, это означает, что эти приложения больше не могут получить доступ к файлам. Кроме того, если Windows приложения создают новые каталоги в дереве каталогов, где используются файлы с учетом регистра, эти каталоги не чувствительны к регистру. Это может затруднить работу со средствами Windows в каталогах с учетом регистра, поэтому соблюдайте осторожность при изменении Windows параметров учета регистра файловой системы.
Использование средства реестра консоли для Windows
Для изменения реестра можно использовать средство реестра консоли (Reg.exe). Для получения справки по использованию средства Reg.exe введите reg /? в командной строке и нажмите кнопку ОК.
Разбор кода из первого занятия
Итак, давайте вспомним задачу, которую мы решили на первом уроке используя готовый код примера: нам было необходимо написать программу, которая бы обеспечила попеременное включение двух светодиодов на плате Discovery (возможно и не двух, если у вас другая версия платы Discovery) с временным интервалом.
Давайте еще разок взглянем на код программы, которую мы использовали для того, чтобы заставить наш МК дрыгать двумя ногами на которых расположены наши светодиоды:
Первым делом, при работе с STM32, даже для такой простой задачи как включение и выключение светодиода нам необходимо предварительно ответить на ряд вопросов:
- Куда подключены наши светодиоды? К какому выводу микроконтроллера?
- Как включить тактирование на нужный порт GPIO?
- Как настроить, нужные нам, пины порта GPIO для того чтобы можно было включить светодиод?
- Как включить и выключить светодиод?
Читайте также: