Тестовая работа памяти без указателей в NXC на NXT?

Я пытаюсь написать программу тестирования памяти для NXT, так как у меня есть несколько с сожженными ячейками памяти, и я хотел бы определить, какие NXT непригодны для использования. Эта программа предназначена для проверки целостности каждого байта в памяти путем:

  1. Выделение 64 бита рандомизатору линейного регистра сдвига обратной связи
  2. Добавление еще одного байта в указатель памяти
  3. Запись случайных данных в выбранную ячейку памяти
  4. Проверка правильности считывания данных

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

Как мне перебрать индексы в памяти без указателей?


person Community    schedule 19.01.2013    source источник
comment
Если вы не можете использовать указатели, значит, у вас практически нет C ...;)   -  person Oliver Charlesworth    schedule 19.01.2013
comment
@OliCharlesworth Ну, надо признать, язык, на котором он запрограммирован, называется Not eXactly C (NXC). К сожалению, на уровне сборки указатели не поддерживаются, так что это то, с чем мне приходится иметь дело.   -  person    schedule 19.01.2013
comment
NXT поддерживает указатели, а NXC - нет (в настоящее время). Вам стоит попробовать Robot C - он того стоит.   -  person shea    schedule 20.01.2013
comment
@bungeshea Я уже использую RobotC для другого проекта. Мне нужно запустить тест памяти - у вас нет доступа на уровне сборки или доступа к указателю в RobotC.   -  person    schedule 20.01.2013
comment
@bungshea Вау, это ново. Компиляция моей версии дает Error: Pointers not supported! Думаю, мне придется обновить.   -  person    schedule 20.01.2013


Ответы (1)


Я думаю, проблема в том, что у вас нет прямого доступа к памяти ни в NBC / NXC, ни в RobotC.

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

Для фактического запуска на «голом железе» я бы предложил использовать функцию NXTBINARY модифицированной прошивки Джона Хансена, как описано здесь:
http://www.tau.ac.il/~stoledo/lego/nxt-native/

Расширенное микропрограммное обеспечение можно найти по адресу:
http://bricxcc.sourceforge.net/test_releases/

person Hawken    schedule 28.04.2013