Странен феномен с едноплатков компютър
На работа се натъкнах на един леко странен "феномен". Колежка се оплаква, че теста на едно изделие не работи с една конкретна платка, но другите платки от серията нямат такъв проблем. Първо си помислих, че има бъг в софтуера на теста. Изделието е един от едноплатковите компютри, които предлагаме, базиран на AllWinner A13.
Тестът е следният:
На една SD карта е записан линукс, в който е вкаран теста на изделието. След като буутне платката и зареди линукса в рама, линуксът трябва да стартира тестовия скрипт ( bash ).
Тестовият скрипт първо отваря един файл, в който са записани конфигурациите на различните изделия и си търси реда със своята конфигурация (на базата на ID на платката). След като я намери парсва конфигурацията, за да знае какво трябва да тества. Да, обаче само на тая платка скриптът казва, че не намира конфигурация с такова ID.
Изключвам платката, вадя SD картата и я слагам на друга платка от същата серия и повтарям процедурата. Там тестът си тръгва без проблем и не реве за ID-то.
Тръгвам да дебъгвам скрипта и установявам, че поради някаква причина линуксът като зареди на въпросната платка не се кефи на фрагменти катo:
Обаче на други платки няма проблем. същият скрипт си върви без проблем на същия линукс зареден от същата карта.
Пренаписах кода да стане от рода на:
И тука на проблемната платка тая част от кода заспа.
Обаче по-нататък има момент в който параметрите на рама в конфигурацията са описани от рода на:
RAM=524288 KB
съответно, като парсна конфигурацията имам променлива RAM, която е със стойност "524288 KB"
И там извиквам
за да остане само "524288", т.е изрязвам всичко след числото. Е да, ама на точно конкретната платка, нещата не се получава.
Решавам да направя експеримент. Отварям си терминал на моя компютър и пиша:
в терминала на платката пиша същата команда и резултатът е:
И установявам, че всъщност
awk се държи различно на тази платка, спрямо другите платки.
И не мога да разбера, как при уж еднакъв хардуер (бомът е еднакъв на всички платки от серията) на който му се зарежда еднакъв софтуер има разлика в резултата при изпълнение на awk?
Открих малка разлика във проблемната платка (от гледна точка на хардуера) спрямо останалите, а именно в RAM чипа:
Последният ред букви и цифри, който е до маркера на чипа, на 3-те платки е еднакъв, обаче на проблемната платка е различен.
Оттам стигнах до изводът, че може да има проблем с RAM чипа и поради някаква причина awk да не се държи както трябва на конкретната платка. Все пак целият линукс и тестовият софтуер и всичко стои във рама.