В Unix, большинство объектов, которые вы можете прочитать и писать - обычные файлы, трубы, клеммы, необработанные диски - все это сделано для напоминания файлов Отказ
Программа, такая как CAT
, читает из его стандартного ввода, такого как это:
n = read(0, buffer, 512);
, который просит 512 байтов. N
- это количество байтов фактически читает или -1, если есть ошибка.
Если вы сделали это неоднократно с обычным файлом, вы получите кучу 512-байтовых чтений, то несколько короче читается на хвостовом конце файла, то 0, если вы пытались прочитать мимо конца файл. Так, CAT
будет работать до n
n n не является <= 0.
Чтение от клемма немного отличается. После того, как вы введете в строку, расторженном в введите клавишу , READ
возвращает только эту строку.
Есть несколько специальных символов, которые вы можете ввести. Один - Ctrl-D . Когда вы вводите это, операционная система отправляет всю текущую строку, которую вы набрали (но не в Ctrl-D сама) к программе, выполняющей чтение. И вот середина: если Ctrl-D является первым символом в строке, программа отправляется строка длины 0 - так же, как программа увидит, будет ли она до конца обычного файл. CAT
Не нужно ничего делать по-другому , будь то чтение из обычного файла или терминала.
Другой специфический характер Ctrl-Z . Когда вы вводите его, в любом месте в строке операционная система отбрасывает все, что вы набрали до этой точки, и отправляет сигнал SIGTSTP в программу, которая обычно останавливается (паузы) и возвращает управление в оболочку.
Так что в вашем примере
$ cat > file.txt
pa bam pshhh<Ctrl+Z>
[2]+ Stopped cat > file.txt
вы набрали некоторые символы, которые были отброшены, то CAT
был остановлен, не написав ничего до его выходного файла.
$ cat > file.txt
pa bam pshhh
<Ctrl+Z>
[2]+ Stopped cat > file.txt
Вы напечатали в одной строке, который Cat
прочитал и написал в свой выходной файл, а затем Ctrl-Z остановлен CAT
.
Он копирует ядро и initrd, хранящиеся во флэш-памяти, в оперативную память перед запуском Linux. Команда cp задокументирована в cp - memory copy
Исходные адреса - это области во флэш-памяти, которые не содержат код u-загрузки флэш-памяти. Адреса назначения - это области в ОЗУ, которые u-boot не использует для своего собственного кода / данных при выполнении.
Я не встречал определения синтаксиса команды копирования флэш-памяти QSPI в ОЗУ, но похоже, что шаблон
cp src_addr dst_addr copy_size
Вторая копия предназначена для дерева устройств ( devicetree.dtb
), которое просто по совпадению имеет размер (0x8000), который совпадает с начальным адресом ядра Linux (0x8000) в ОЗУ.