-
- По кейлу не специалист, но ты уверен, что это он косячит? Ассемблерный листинг смотрел, что там? По идее, должен был все к 32м битам привести и поделить. Но мог вмешаться оптимизатор. Пробовал отключать оптимизацию, или это не приемлемо? - AlexBi(29.05.2015 12:25)
- Вот что кажет SRC файло... POV(569 знак., 29.05.2015 12:35)
- Старшие разряды результата (R4, R5) откинуты. Ты ж 16-битному присваиваешь. ULDIV -- беззнаковое деление 32-разрядных чисел. Здесь все ок. - fk0(29.05.2015 12:48)
- Отлично, я всецело за - тогда чего же результат неверный? Он у меня всегда заведомо влазит в 16 бит. - POV(29.05.2015 12:55)
- Потому что ты утаил код. Да, можешь выложить весь проект, но я не уверен, что буду в нём копаться... - SciFi(29.05.2015 13:03)
- Да никто ни в чём копаться не будет. Имеет место или моё недопонимание сишника или же специфика компилятора. Вот к примеру я точнее локализовал проблему... POV(424 знак., 29.05.2015 13:12)
- Часто, при таких чудо глюках, помогает увеличение размера стека :) - Kit(31.05.2015 02:59)
- Не понимаю в чем сырбор. Вопрос не стоит обсуждения. Все решается восьмиклассником на симуляторе или на реале с выводом подозрительного адреса и данных в RS. Не понимаю. - Олдфа(31.05.2015 10:12, )
- Но видимо не так просто ищется косяк, раз я помощи зала попросил. Тем более что в настоящий момент я боюсс перекомпиливать код, т.к. он заработал (найди как гарантировано плавающую проблему). Использую то, что есть для отладки железа. - POV(31.05.2015 10:24)
- Ну в чем проблема? Создать фальшивый проект в 20 строчек, в котором точно так же вычисляется адрес. Те же установки, оптимизация, типы давнных и те же операции / %. Пройтись симулятором, с подозрительным значением. Сказать людям что компилятор не Олдфаг(32 знак., 31.05.2015 10:34, )
- Уже. - POV(31.05.2015 10:34, ссылка)
- Не вижу анализа. Перестаньте оперировать понятиями работает не работает. Пройдите злополучное место симулятором и посмотрите где затык. Здесь не нужно железо даже.... - Олдфаг(31.05.2015 10:42, )
- Спасибо КО - POV(31.05.2015 11:24, ссылка)
- А отключить нельзя? Резать все что мешает Симулятору. Уже даже сомневаюсь, что Вы знаете разницу между симулятором и эмулятором. Убратьнах ожидание флагов, вызовы асм и прочую нечисть. Чиста голый сишный проэкт. Симулятор, или, как его называли в Олдфаг(128 знак., 31.05.2015 11:56, )
- Если убрать - то это будет не тот проект что нужен. И отсутствие косяков в нем мне ничего не даст. Писал же выше, что "чистое" тестирование косяков не выявило. Проблема именно с данным проектом. - POV(31.05.2015 12:18)
- Есть более простой путь Восьмиклассника. Перед записью кривой страницы, когда адреса и данные готовы к выплевыванию в датафлешь, сделать if(адрес_подозрительной_страницы){ DI; printf(подготовленный_адрес); printf(подготовленное данное);}. Тогда на Олдфаг(66 знак., 31.05.2015 12:02, )
- А отключить нельзя? Резать все что мешает Симулятору. Уже даже сомневаюсь, что Вы знаете разницу между симулятором и эмулятором. Убратьнах ожидание флагов, вызовы асм и прочую нечисть. Чиста голый сишный проэкт. Симулятор, или, как его называли в Олдфаг(128 знак., 31.05.2015 11:56, )
- Спасибо КО - POV(31.05.2015 11:24, ссылка)
- Не вижу анализа. Перестаньте оперировать понятиями работает не работает. Пройдите злополучное место симулятором и посмотрите где затык. Здесь не нужно железо даже.... - Олдфаг(31.05.2015 10:42, )
- Уже. - POV(31.05.2015 10:34, ссылка)
- Ну в чем проблема? Создать фальшивый проект в 20 строчек, в котором точно так же вычисляется адрес. Те же установки, оптимизация, типы давнных и те же операции / %. Пройтись симулятором, с подозрительным значением. Сказать людям что компилятор не Олдфаг(32 знак., 31.05.2015 10:34, )
- Но видимо не так просто ищется косяк, раз я помощи зала попросил. Тем более что в настоящий момент я боюсс перекомпиливать код, т.к. он заработал (найди как гарантировано плавающую проблему). Использую то, что есть для отладки железа. - POV(31.05.2015 10:24)
- Не понимаю в чем сырбор. Вопрос не стоит обсуждения. Все решается восьмиклассником на симуляторе или на реале с выводом подозрительного адреса и данных в RS. Не понимаю. - Олдфа(31.05.2015 10:12, )
- в C8051 полно всяких банков и с ними нужно обходиться аккуратненько - Vit(29.05.2015 13:14)
- Я ручками никаких банков не назначал. - POV(29.05.2015 13:25)
- Расположение переменных? У тебя в памяти имеет место засирание, а ты нас типами данных паришь. - SciFi(29.05.2015 13:15)
- Вынужден согласиться что типы не причём, хотя суть косяка пока не раскопал... POV(809 знак., 30.05.2015 11:25)
- Просто покажи код. - fk0(30.05.2015 11:32)
- Да ты скажи чего показать. Весь проект выложить или что-то конкретное нужно?... POV(21 знак., 30.05.2015 11:36 - 11:44)
- Облом лезть в стандарт, но порядок действий при | вроде как не гарантирован. Vit(235 знак., 30.05.2015 13:28)
- Накаркал.. теперь когда заработало чтение флехи, начала именно эта операция по работе с ОЗУ косячить. Сделал приведение типа к 16 битам - работает. Это наверное пасмурная погода так действует ) POV(68 знак., 01.06.2015 10:42)
- Именно тут нет косяков. Проблемы по работе с dataflash (модуль AT49DBxxD.c) - POV(31.05.2015 00:20)
- Проблема, очевидно, в чём-то другом. Я в коде ничего опасного не усмотрел. Почему вообще ты уверен, что flash работает неправильно? Может ты получаешь об этом не верные данные. Насколько я понимаю, у тебя код переносит данные из dataflash в fk0(196 знак., 31.05.2015 12:00)
- Я файло 512 кбайт с компа заливаю во флешь, затем считываю и смотрю несовпадения. При адресах за 64к начинается путаница - читается (предположительно) не с тех адресов (т.е. данные там осмысленные, куски заливаемого текста) но не с того места POV(252 знак., 31.05.2015 12:15 - 12:19)
- С компа и обратно - не через USB-ли? Попробуйте прогнать эти 512к не через флэшь, а просто через МК и сравнить. У меня были сбои на FT232+Linux на 500кБод, пролечил тупым сниженим количества байт в пакете от МК. - Точка опоры(31.05.2015 12:22)
- Вопросы: 1) как изначально данные попадают во flash? Через что? 2) как вычитываются из внешней памяти обратно в комп? Я этого в коде не усмотрел. 3) Работа компорта в программе в процессе теста нужна или нет? Можно ли отключить этот модуль на fk0(152 знак., 31.05.2015 12:24)
- Гоняются данные через УАРТ. Идентичные (почти) команды в файлике commands.h... С ОЗОй проблем нет... POV(128 знак., 31.05.2015 12:34 - 12:36)
- Я файло 512 кбайт с компа заливаю во флешь, затем считываю и смотрю несовпадения. При адресах за 64к начинается путаница - читается (предположительно) не с тех адресов (т.е. данные там осмысленные, куски заливаемого текста) но не с того места POV(252 знак., 31.05.2015 12:15 - 12:19)
- Проблема, очевидно, в чём-то другом. Я в коде ничего опасного не усмотрел. Почему вообще ты уверен, что flash работает неправильно? Может ты получаешь об этом не верные данные. Насколько я понимаю, у тебя код переносит данные из dataflash в fk0(196 знак., 31.05.2015 12:00)
- Да на + заменить его и все - Олдфаг(30.05.2015 22:32, )
- А я бы сделал так: FDA(155 знак., 30.05.2015 22:18)
- Облом лезть в стандарт, но порядок действий при | вроде как не гарантирован. Vit(235 знак., 30.05.2015 13:28)
- Да ты скажи чего показать. Весь проект выложить или что-то конкретное нужно?... POV(21 знак., 30.05.2015 11:36 - 11:44)
- Просто покажи код. - fk0(30.05.2015 11:32)
- Поэтому и нужно приводить код полностью, что сам засора не видишь, а он в глаза бросается. - fk0(29.05.2015 13:19)
- Вынужден согласиться что типы не причём, хотя суть косяка пока не раскопал... POV(809 знак., 30.05.2015 11:25)
- Часто, при таких чудо глюках, помогает увеличение размера стека :) - Kit(31.05.2015 02:59)
- +1. Ибо очевидно уже, что проблема в другом месте. - fk0(29.05.2015 13:05)
- Да никто ни в чём копаться не будет. Имеет место или моё недопонимание сишника или же специфика компилятора. Вот к примеру я точнее локализовал проблему... POV(424 знак., 29.05.2015 13:12)
- Потому что ты утаил код. Да, можешь выложить весь проект, но я не уверен, что буду в нём копаться... - SciFi(29.05.2015 13:03)
- Отлично, я всецело за - тогда чего же результат неверный? Он у меня всегда заведомо влазит в 16 бит. - POV(29.05.2015 12:55)
- Судя по этому тексту действует кейл правильно. Ошибка в ?C?ULDIV крайне маловероятна. Вероятно надо искать проблему где-то в другом месте. - AlexBi(29.05.2015 12:46)
- Старшие разряды результата (R4, R5) откинуты. Ты ж 16-битному присваиваешь. ULDIV -- беззнаковое деление 32-разрядных чисел. Здесь все ок. - fk0(29.05.2015 12:48)
- Вот что кажет SRC файло... POV(569 знак., 29.05.2015 12:35)
- А если так: p = addr / 264UL; - Andreas(29.05.2015 11:47)
- Неа - POV(29.05.2015 11:58)
- Значит копай дальше, если не хочешь еще глюков. - Andreas(29.05.2015 12:15)
- Неа - POV(29.05.2015 11:58)
- Как маленький. ей-бо... "Работает, не работает". Ну что мешает посмотреть в том же отладчике результаты арифметики / и % когда они WORD? - Petrovich(29.05.2015 11:22, )
- Вопрос был один "почему оно привело тип до конца вычислений?". Ответ подразумевает "так и должно быть, пойми и прости" или "вот такой есть синтаксис который это исправит". Остальное для посиделок под рюмку чая IRL. - POV(29.05.2015 11:25)
- Помнится, там в настройках компилятора была галка "приводить целые по всем правилам Си". Если её убрать, то будет более оптимальный код и вот такие сюрпризы, как у тебя. - SciFi(29.05.2015 11:43 - 11:45, ссылка)
- Увы, это не то.. не помогло. - POV(29.05.2015 12:06)
- Ты для начала исходник полностью приведи. - fk0(29.05.2015 12:14)
- Дык, смысл в полном исходнике? Куски связанные с работой с DF я привёл в корневом посте. - POV(29.05.2015 12:18)
- Ну ты даёшь. Ты показал хвост и кусок уха, а хочешь, чтобы мы диагностировали несварение у слона. - SciFi(29.05.2015 12:30)
- Да я не понимаю чего показывать. Могу весь проект вывалить - ничего секретного там нет. - POV(29.05.2015 12:39)
- Ну ты даёшь. Ты показал хвост и кусок уха, а хочешь, чтобы мы диагностировали несварение у слона. - SciFi(29.05.2015 12:30)
- Дык, смысл в полном исходнике? Куски связанные с работой с DF я привёл в корневом посте. - POV(29.05.2015 12:18)
- Ты что-то недоговариваешь. Не может косячить "p = addr / 264; где addr - DWORD, а p и b - WORD". У тебя где-то в другом месте косяк. А ты ленишься и отладчиком посмотреть не желаешь, фу. - SciFi(29.05.2015 12:13)
- У мя включено "Generate Assemble SRC file" - не хотит отладчик в модуль входить. - POV(29.05.2015 12:18 - 12:22)
- Я хз как по стандарту, но в иаре бывало u16=u32/u16 отрабатывало как u16=u16/u16 - Andreas(29.05.2015 12:18)
- По стандарту вроде как должно было отработать так u16=(u16)(u32/((u32)u16)) - AlexBi(29.05.2015 12:27)
- Ты для начала исходник полностью приведи. - fk0(29.05.2015 12:14)
- Это причина, почему нужно использовать Makefile, а не волшебные крыжики спрятанные за 6 вкладкой 3-ей страницы настроек. - fk0(29.05.2015 11:48)
- замена волшебных крыжиков на магические ключики в майкфиле не меняет ничего, вообще ничего. - Nikolay801_(29.05.2015 11:55)
- Это для тебя не меняет. Не вижу смысла спорить. Горбатого могила исправит. fk0(747 знак., 29.05.2015 12:03)
- ложь по всем пунктам. - Nikolay801_(29.05.2015 13:27)
- Ты или научись отвечать аргументированно, или получи заслуженное звание пиздабола. - fk0(29.05.2015 13:29)
- присваивай почетное звание. - Nikolay801_(29.05.2015 13:30)
- Ты или научись отвечать аргументированно, или получи заслуженное звание пиздабола. - fk0(29.05.2015 13:29)
- крыжыки-makefile-текстовый файл... Apтём(129 знак., 29.05.2015 12:53)
- Красноглазые загоны - это диагноз. - POV(29.05.2015 12:09)
- Красноглазые не задают здесь вопросов "почему у меня не работает программа" -- при наличии отладчика уровня EC2 (штатный для C8051F12xx) это решается в лоб. Там отличный отладчик, штатный от Silabs. Без всяких кейлов. Это совсем не то же самое, fk0(47 знак., 29.05.2015 12:19)
- А то блин 15 лет опыта не позволяют мне сообразить да посмотреть отладчиком. - POV(29.05.2015 12:23, ссылка)
- Красноглазые не задают здесь вопросов "почему у меня не работает программа" -- при наличии отладчика уровня EC2 (штатный для C8051F12xx) это решается в лоб. Там отличный отладчик, штатный от Silabs. Без всяких кейлов. Это совсем не то же самое, fk0(47 знак., 29.05.2015 12:19)
- ложь по всем пунктам. - Nikolay801_(29.05.2015 13:27)
- Это для тебя не меняет. Не вижу смысла спорить. Горбатого могила исправит. fk0(747 знак., 29.05.2015 12:03)
- замена волшебных крыжиков на магические ключики в майкфиле не меняет ничего, вообще ничего. - Nikolay801_(29.05.2015 11:55)
- Увы, это не то.. не помогло. - POV(29.05.2015 12:06)
- Помнится, там в настройках компилятора была галка "приводить целые по всем правилам Си". Если её убрать, то будет более оптимальный код и вот такие сюрпризы, как у тебя. - SciFi(29.05.2015 11:43 - 11:45, ссылка)
- Вопрос был один "почему оно привело тип до конца вычислений?". Ответ подразумевает "так и должно быть, пойми и прости" или "вот такой есть синтаксис который это исправит". Остальное для посиделок под рюмку чая IRL. - POV(29.05.2015 11:25)
- Какой проц? Какой компилятор? Почему DWORD, а не uint32_t? - SciFi(29.05.2015 10:40)
- Кейл, 51 проц. DWORD - ибо эти typedef'ы я за собой по всем проектам таскаю.. душой прикипел уже )) POV(182 знак., 29.05.2015 10:43)
- По кейлу не специалист, но ты уверен, что это он косячит? Ассемблерный листинг смотрел, что там? По идее, должен был все к 32м битам привести и поделить. Но мог вмешаться оптимизатор. Пробовал отключать оптимизацию, или это не приемлемо? - AlexBi(29.05.2015 12:25)