(2015-10-07 15:09:08 отредактировано dayznse)

Не работают функции записи/чтения внутри Code-ключа

Столкнулся со следующей проблемой.
В маске ключа есть защищенная ячейка, которая содержит в себе строку типа "Hello, World". Ячейка активна, чтение по паролю.
Обычным способом ячейка успешно читается:

struct {
        DWORD dwSize;
        BYTE abData[128];
    } sIOData;
    // Reading protected item (with a password):
    sIOData.dwSize=64;
    int nRet = GrdPI_Read(hGrd, 0x04, 0, sIOData.dwSize, sIOData.abData, 54321, NULL);
    MemoLog->Lines->Add("PI Value (обычным способом): " + String((char*)sIOData.abData));

А внутри ключа прочитанными данными оказываются нули, при этом функция чтения возвращает GrdE_OK.
Код внутри ключа:

extern struct
{
    DWORD dwSize;
    BYTE abData[128];
} iodata ALIGNED;

DWORD main(DWORD dwInDataLng, DWORD dwOutDataLng, DWORD dwP1)
{
    volatile int i;
    
        int ret = GcaPI_Read( 0, 4, 0, iodata.dwSize, iodata.abData, 0, 0);    
        if (ret == GrdE_OK)
        {
            GcaLedOff(0);
            for (i = 0; i < 500000; i++);
            GcaLedOn(0);
        }        
        if (iodata.abData[1] != 0)
        {                                        
            GcaLedOff(0); // Этот код по факту не выполняется !
            for (i = 0; i < 500000; i++);
            GcaLedOn(0);    
        }        
        return ret;  // в главной программе проверял - возвращается GrdE_OK
}

Из-за чего может быть данная ошибка? Даже не представляю где копать.

Точно также происходит и с обычной памятью и функциями Read\Write:
GrdRead и GrdWrite работают как надо, а их аналоги GcaRead и GcaWrite вообще ничего не делают, хотя возвращают GrdE_OK.

Re: Не работают функции записи/чтения внутри Code-ключа

Здравствуйте!
Мы не смогли понять как именно Вы диагностируете ошибку.
Вы не могли бы более подробно описать, а лучше прислать нам тестовый пример (hotline@guardant.ru), где проявляется эта ошибка?

Re: Не работают функции записи/чтения внутри Code-ключа

Да, подготовлю "чистый" пример и вышлю на почту.

(2015-10-07 19:47:13 отредактировано dayznse)

Re: Не работают функции записи/чтения внутри Code-ключа

dayznse пишет:

Да, подготовлю "чистый" пример и вышлю на почту.

Отправил. Так же хочу обратить внимание, что если в пределах одной сессии работы с ключом выполнить сначала Write, а потом Read, то буфер будет содержать необходимые данные, но реально запись/чтение не происходит. В этом можно убедиться, например, перевоткнув ключ в порт.

Нашел у себя ошибку: забыл добавить паузу между "морганиями" светодиода, но вставка такой паузы лишь еще раз доказала что из памяти ключа считываются нули.

Re: Не работают функции записи/чтения внутри Code-ключа

Здравствуйте!
Спасибо Вам за обратную связь.
Мы передали информацию нашим разработчикам. Как только будет результат сразу же Вам сообщим по почте.