Перейти к содержанию
    

Считывание кейлом старт прошивки и ее длину

#include <stdio.h>

const volatile unsigned char fw_hash[32];
static unsigned char const volatile fw_hash[32] __attribute__((section("hash_section"), used)) = {94,94,94,94,95,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94};

  

от сюда убрать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Метценгерштейн сказал:
#include <stdio.h>

const volatile unsigned char fw_hash[32];
static unsigned char const volatile fw_hash[32] __attribute__((section("hash_section"), used)) = {94,94,94,94,95,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94};

Это вообще что? Какой компилятор такое компилит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 hours ago, Arlleex said:

Это вообще что? Какой компилятор такое компилит?

Непосредственно компилятор ArmCompiler5Last.

Да, не самая простая запись для понимания. Но и задача у меня из ряда вон. Идеи приветствую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только что, Метценгерштейн сказал:

Непосредственно компилятор ArmCompiler5Last.

Да, не самая простая запись для понимания. Но и задача у меня из ряда вон. Идеи приветствую.

Я к тому, что эта конструкция должна приводить к ошибке компиляции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

extern const  unsigned char fw_hash[32];

int check_hash(unsigned char *hashBuf, unsigned int hashLength,const volatile unsigned char *hash)
{
    for (int i =0; i < hashLength; i++)
    {
        hashBuf[i] = hash[i];
    }
}

static int ReadHash(unsigned int hashAddr, unsigned char *hashBuf, unsigned int hashLength)
{	
	check_hash(hashBuf, hashLength, fw_hash);
    return 0;
}

 

15 hours ago, aaarrr said:

Я бы убрал volatile из объявления, но оставил бы при обращении:

единственное, const пришлось оставить в аргументах- без него не компилится.

Результат тот же. Массив показывается, но при изменении снаружи файла прошивки, не реагирует на изменения. Показывает старые значения.

Если за сегодня идей нам не придет, то надо будет внешнюю епром использовать, считывать от туда значение эталонного хеша.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы что, под дебаггером смотрите либо? Так он подгружает из сгенерированного elf, а не из вашего измененного бинарника.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

48 minutes ago, Метценгерштейн said:

Да, не самая простая запись для понимания

Так к чему это нагромождение?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 minutes ago, Arlleex said:

Вы что, под дебаггером смотрите либо? Так он подгружает из сгенерированного elf, а не из вашего измененного бинарника.

под дебаггером. Хотите сказать, что все работает, не так проверяю?

38 minutes ago, aaarrr said:

Так к чему это нагромождение?

мы вместе ее и составили. Чтобы этот массив ушел в конец флеш прошивки. Или я не понимаю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, Метценгерштейн said:

мы вместе ее и составили. Чтобы этот массив ушел в конец флеш прошивки. Или я не понимаю?

Должно быть:

const unsigned char fw_hash[32] __attribute__((section("hash_section"), used)) = {94,94,94,94,95,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94};

и всё.

 

9 minutes ago, Метценгерштейн said:

Хотите сказать, что все работает, не так проверяю?

Не так: дебаггер бинарник не грузит, и знать о нем ничего не знает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, aaarrr said:

Должно быть:

const unsigned char fw_hash[32] __attribute__((section("hash_section"), used)) = {94,94,94,94,95,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94};

и всё.

инициализацию в файле сделал так.

Убрал лишнее объявление.

Результат тот же- не вижу измененный снаружи массив. 

Скорее, надо внешней памятью пользоваться

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, Метценгерштейн said:

Результат тот же- не вижу измененный снаружи массив.

Теперь без дебаггера?

Как минимум, нужно убедиться, что данные снова стали RO, Load Addr = Exec. Addr

 

6 minutes ago, Метценгерштейн said:

Скорее, надо внешней памятью пользоваться

Не получается в конце - разместите в начале (в секции NUC_INIT). Все проще, чем огород городить с внешней памятью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, aaarrr said:

Теперь без дебаггера?

Как минимум, нужно убедиться, что данные снова стали RO, Load Addr = Exec. Addr

давайте по шагам.

Что тут надо сделать? Просто не очень понял

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...