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

adnega

Свой
  • Постов

    3 594
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

Весь контент adnega


  1. Возможно. Но речь шла о том, что НДС для разработчика-ИП тема параллельная. Одно дело сидеть в цепочке перепродавцов, а другое - создавать продукт. Где-то жизненно важно выделять для покупателя НДС, иначе просто не купят у вас. Тут налицо недопонимание, я про УСН вообще ничего не говорил, хотя признаю, что УСН-щики, вроде как, освобождаются от НДС без каких-либо условий (пока имеешь право на УСН). Для дельцов на общем режиме действует возможность не быть плательщиком НДС. Повторюсь, у меня жена вообще на патенте, но за часть декабря 2017 у нее возникла обязанность уплаты НДС, т.к. не написала в свое время ни заявления на УСН (и еще не факт, что патент смогла бы получить 0% в течении двух налоговых периодов), на заявление на освобождение от НДС. Итого: НДС всеми признан непростой налог, но к нам (разработчикам), к счастью, он никакого отношения не имеет. Уж если тема перешла от содержания договоров в налоги, то что должен делать разработчик-ИП на УСН 6% в отношении налоговой? Какие декларации и когда предоставлять? Какую бухгалтерию вести? Считаем, что наемных работников нет, расчетный счет должен быть, вывод средств себе на карту, иногда покупаем дорогостоящее оборудование или помещения (нужно ли их относить к основным средствам как у ООО)? Недвижимость не продаем, или продаем с уплатой НДФЛ 13%? На Али ничего официально не покупаем и/или не перепродаем?
  2. gcc-шный objdump легко превращает бинарник в s-файл. Можете скинуть бинарь - я его конвертну, если у вас нет gcc.
  3. Покажите пожалуйста выход генератора для случая DWORD, WORD, DWORD, BYTE, BYTE в виде asm-инструкций. У меня с таблицей переменных и невыровненными данным получилось так // r0 = *s, r1 = var // DWORD[0] 68 0A - ldr r2, [r1, #0] 60 02 - str r2, [r0, #0] // WORD[1] 89 0A - ldrh r2, [r1, #8] 80 82 - strh r2, [r0, #4] // DWORD[2] 8A 0A - ldrh r2, [r1, #16] 80 C2 - strh r2, [r0, #6] 8A 4A - ldrh r2, [r1, #18] 81 02 - strh r2, [r0, #8] // BYTE[6] 31 30 - add r1, #48 78 0A - ldrb r2, [r1, #0] 72 82 - strb r2, [r0, #10] // BYTE[7] 7A 0A - ldrb r2, [r1, #8] 72 C2 - strb r2, [r0, #11] 30 0C - adds r0, #12 47 70 - bx lr Кста, а есть у кого-нить справочник машинных кодов для Cortex-M всех семейств? Не путать со справочником asm-команд, который найти не составляет труда.
  4. "Легкий старт" от Сбербанка: - обслуживание 0 руб/месяц; - все внутренние и 3 внешних платежа в месяц бесплатны, а потом по 100 рублей за платеж; - на счет физлиц до 150 тыр в месяц без комиссии, затем 1%; - снятие наличных 3%; - пополнение 0.15%. Получается, можно выводить себе на карту до 150 тыр ежемесячно без комиссий.
  5. А что именно неправильно? Есть таблица переменных состоящая из значений и типов. Есть маска, где каждый бит связан с соответствующим элементом таблицы. Есть функция-генератор, создающая в рантайме код, при выполнении которого в выходной поток копируются данные из таблицы с учетом длины и заданной маски. Для заданного var, RESULT (отработал СМК) такой ожидаете? Если нет, то где ошибка? Ну, функция set_new_mask не должна менять mask, поэтому и const. Или я вас не понял. Вы же супер-скорость хотели. Выкидывайте push и pop - и вот вам готовый участок кода, дающий результат, но не забудьте проинициализировать r0 и r1. Если нужна именно как функция, то достаточно одного "bx lr" в конце. Какие именно команды лишние? Можно IS_ALIGN обнулить, тогда генератор будет работать с невыровненными данными. Попробую сегодня избавиться от лишних adds.
  6. Проверил в железе - работает (Cortex-M0). #include "stdafx.h" #include "conio.h" #include "windows.h" #define IS_ALIGN (1) #define VAR_NUM (32) //----------------------------------------------------------------------------- // enum eVAR_TYPE //----------------------------------------------------------------------------- enum eVAR_TYPE { VAR_NONE = 0, VAR_DWORD, VAR_WORD, VAR_BYTE, }; //----------------------------------------------------------------------------- // typedef struct sVAR //----------------------------------------------------------------------------- typedef struct sVAR { union { DWORD data_dw; WORD data_w; BYTE data_b; }; enum eVAR_TYPE type; } sVAR; volatile sVAR var[VAR_NUM] = { {0x12345678, VAR_DWORD}, {0xABCD, VAR_WORD}, {0x11223344, VAR_DWORD}, {0x55, VAR_BYTE}, {0x00, VAR_BYTE}, {0x66, VAR_BYTE}, {0x77, VAR_BYTE}, {0x88, VAR_BYTE}, {0x99, VAR_BYTE}, {0xAA, VAR_BYTE}, {0xBB, VAR_BYTE}, {0xCC, VAR_BYTE}, {0xDD, VAR_BYTE}, {0xEE, VAR_BYTE}, {0xFF, VAR_BYTE}, {0x98765432, VAR_DWORD}, }; BYTE exec_ram[1024]; //----------------------------------------------------------------------------- // void set_new_mask(const DWORD mask) //----------------------------------------------------------------------------- void set_new_mask(const DWORD mask) { int offset; int last_var = 0; int s_pos = 0; int exec_ram_pos = 0; printf("// r0 = *s, r1 = var\n"); // PUSH {r2, lr} exec_ram[exec_ram_pos++] = 0x04; exec_ram[exec_ram_pos++] = 0xB5; printf("B5 04 - push {r2, pc}\n"); for(int i = 0; i < VAR_NUM; i++) { if(mask & (1 << i)) { switch(var[i].type) { case VAR_DWORD: printf("// DWORD[%d]\n", i); offset = (i - last_var) * 8; last_var = i; while(offset > 128) { offset -= 128; // ADD r1, #128 exec_ram[exec_ram_pos++] = 128; exec_ram[exec_ram_pos++] = 0x31; printf("31 80 - add r1, #128\n"); } if(offset) { // ADD r1, #offset exec_ram[exec_ram_pos++] = offset; exec_ram[exec_ram_pos++] = 0x31; printf("31 %02X - add r1, #%d\n", offset, offset); } if(IS_ALIGN && (s_pos & 1)) { // byte align // LDRB r2, [r1, #0] exec_ram[exec_ram_pos++] = 0x0A; exec_ram[exec_ram_pos++] = 0x78; printf("78 0A - ldrb r2, [r1, #0]\n"); // STRB r2, [r0, #0] exec_ram[exec_ram_pos++] = 0x02; exec_ram[exec_ram_pos++] = 0x70; printf("70 02 - strb r2, [r0, #0]\n"); // LDRB r2, [r1, #1] exec_ram[exec_ram_pos++] = 0x4A; exec_ram[exec_ram_pos++] = 0x78; printf("78 4A - ldrb r2, [r1, #1]\n"); // STRB r2, [r0, #1] exec_ram[exec_ram_pos++] = 0x42; exec_ram[exec_ram_pos++] = 0x70; printf("70 42 - strb r2, [r0, #1]\n"); // LDRB r2, [r1, #2] exec_ram[exec_ram_pos++] = 0x8A; exec_ram[exec_ram_pos++] = 0x78; printf("78 8A - ldrb r2, [r1, #2]\n"); // STRB r2, [r0, #2] exec_ram[exec_ram_pos++] = 0x82; exec_ram[exec_ram_pos++] = 0x70; printf("70 82 - strb r2, [r0, #2]\n"); // LDRB r2, [r1, #3] exec_ram[exec_ram_pos++] = 0xCA; exec_ram[exec_ram_pos++] = 0x78; printf("78 CA - ldrb r2, [r1, #3]\n"); // STRB r2, [r0, #3] exec_ram[exec_ram_pos++] = 0xC2; exec_ram[exec_ram_pos++] = 0x70; printf("70 C2 - strb r2, [r0, #3]\n"); } else if(IS_ALIGN && (s_pos & 2)) { // word align // LDRH r2, [r1, #0] exec_ram[exec_ram_pos++] = 0x0A; exec_ram[exec_ram_pos++] = 0x88; printf("88 0A - ldrh r2, [r1, #0]\n"); // STRH r2, [r0, #0] exec_ram[exec_ram_pos++] = 0x02; exec_ram[exec_ram_pos++] = 0x80; printf("80 02 - strh r2, [r0, #0]\n"); // LDRH r2, [r1, #2] exec_ram[exec_ram_pos++] = 0x4A; exec_ram[exec_ram_pos++] = 0x88; printf("88 4A - ldrh r2, [r1, #2]\n"); // STRH r2, [r0, #2] exec_ram[exec_ram_pos++] = 0x42; exec_ram[exec_ram_pos++] = 0x80; printf("80 42 - strh r2, [r0, #2]\n"); } else { // dword align // LDR r2, [r1, #0] exec_ram[exec_ram_pos++] = 0x0A; exec_ram[exec_ram_pos++] = 0x68; printf("68 0A - ldr r2, [r1, #0]\n"); // STR r2, [r0, #0] exec_ram[exec_ram_pos++] = 0x02; exec_ram[exec_ram_pos++] = 0x60; printf("60 02 - str r2, [r0, #0]\n"); } // ADDS r0, #4 exec_ram[exec_ram_pos++] = 0x04; exec_ram[exec_ram_pos++] = 0x30; printf("30 04 - adds r0, #4\n"); s_pos += 4; break; case VAR_WORD: printf("// WORD[%d]\n", i); offset = (i - last_var) * 8; last_var = i; while(offset > 128) { offset -= 128; // ADD r1, #128 exec_ram[exec_ram_pos++] = 128; exec_ram[exec_ram_pos++] = 0x31; printf("31 80 - add r1, #128\n"); } if(offset) { // ADD r1, #offset exec_ram[exec_ram_pos++] = offset; exec_ram[exec_ram_pos++] = 0x31; printf("31 %02X - add r1, #%d\n", offset, offset); } if(IS_ALIGN && (s_pos & 1)) { // byte align // LDRB r2, [r1, #0] exec_ram[exec_ram_pos++] = 0x0A; exec_ram[exec_ram_pos++] = 0x78; printf("78 0A - ldrb r2, [r1, #0]\n"); // STRB r2, [r0, #0] exec_ram[exec_ram_pos++] = 0x02; exec_ram[exec_ram_pos++] = 0x70; printf("70 02 - strb r2, [r0, #0]\n"); // LDRB r2, [r1, #1] exec_ram[exec_ram_pos++] = 0x4A; exec_ram[exec_ram_pos++] = 0x78; printf("78 4A - ldrb r2, [r1, #1]\n"); // STRB r2, [r0, #1] exec_ram[exec_ram_pos++] = 0x42; exec_ram[exec_ram_pos++] = 0x70; printf("70 42 - strb r2, [r0, #1]\n"); } else { // word align // LDRH r2, [r1, #0] exec_ram[exec_ram_pos++] = 0x0A; exec_ram[exec_ram_pos++] = 0x88; printf("88 0A - ldrh r2, [r1, #0]\n"); // STRH r2, [r0, #0] exec_ram[exec_ram_pos++] = 0x02; exec_ram[exec_ram_pos++] = 0x80; printf("80 02 - strh r2, [r0, #0]\n"); } // ADDS r0, #2 exec_ram[exec_ram_pos++] = 0x02; exec_ram[exec_ram_pos++] = 0x30; printf("30 02 - adds r0, #2\n"); s_pos += 2; break; case VAR_BYTE: printf("// BYTE[%d]\n", i); offset = (i - last_var) * 8; last_var = i; while(offset > 128) { offset -= 128; // ADD r1, #128 exec_ram[exec_ram_pos++] = 128; exec_ram[exec_ram_pos++] = 0x31; printf("31 80 - add r1, #128\n\r"); } if(offset) { // ADD r1, #offset exec_ram[exec_ram_pos++] = offset; exec_ram[exec_ram_pos++] = 0x31; printf("31 %02X - add r1, #%d\n", offset, offset); } // LDRB r2, [r1, #0] exec_ram[exec_ram_pos++] = 0x0A; exec_ram[exec_ram_pos++] = 0x78; printf("78 0A - ldrb r2, [r1, #0]\n"); // STRB r2, [r0, #0] exec_ram[exec_ram_pos++] = 0x02; exec_ram[exec_ram_pos++] = 0x70; printf("70 02 - strb r2, [r0, #0]\n"); // ADDS r0, #1 exec_ram[exec_ram_pos++] = 0x01; exec_ram[exec_ram_pos++] = 0x30; printf("30 01 - adds r0, #1\n"); s_pos += 1; break; } } } printf("// EXIT\n"); // POP {r2, pc} exec_ram[exec_ram_pos++] = 0x04; exec_ram[exec_ram_pos++] = 0xBD; printf("BD 04 - pop {r2, pc}\n"); #if 0 printf("SMC:\n"); for(int i = 0; i < exec_ram_pos / 2; i++) printf("%02X %02X\n", exec_ram[i * 2 + 1], exec_ram[i * 2 + 0]); #endif } int _tmain(int argc, _TCHAR* argv[]) { set_new_mask(0xc7); _getch(); return 0; } СМК: // r0 = *s, r1 = var B5 04 - push {r2, pc} // DWORD[0] 68 0A - ldr r2, [r1, #0] 60 02 - str r2, [r0, #0] 30 04 - adds r0, #4 // WORD[1] 31 08 - add r1, #8 88 0A - ldrh r2, [r1, #0] 80 02 - strh r2, [r0, #0] 30 02 - adds r0, #2 // DWORD[2] 31 08 - add r1, #8 88 0A - ldrh r2, [r1, #0] 80 02 - strh r2, [r0, #0] 88 4A - ldrh r2, [r1, #2] 80 42 - strh r2, [r0, #2] 30 04 - adds r0, #4 // BYTE[6] 31 20 - add r1, #32 78 0A - ldrb r2, [r1, #0] 70 02 - strb r2, [r0, #0] 30 01 - adds r0, #1 // BYTE[7] 31 08 - add r1, #8 78 0A - ldrb r2, [r1, #0] 70 02 - strb r2, [r0, #0] 30 01 - adds r0, #1 // EXIT BD 04 - pop {r2, pc} Результат на Cortex-M0
  7. Условия в рантайме меняются или нет? Если нет, то компилятор сам выкинет заведомо ложные и исполнит заведомо истинные условия. А если они меняются в рантайме, то и ваш генератор СМК должен все эти условия проверить, сгенерить год и исполнить его. По моему, даже если вы выиграете на исполнении СМК, то скорее всего проиграете на подготовке СМК.
  8. Простите, а пункты 1 и 2 не требуют тактов разве?
  9. Про HardFault

    STM32F405RGT8 - 192кБ ОЗУ, а у STM32F410 всего 32 кБ. Вангую проблему со стеком.
  10. Видимо, у вас "за три предшествующих последовательных календарных месяца сумма выручки от реализации товаров (работ, услуг) этих организаций или индивидуальных предпринимателей без учета налога не превысила в совокупности два миллиона рублей (НКРФ 145.1)". Когда будете зарабатывать больше 2 млн. руб за 3 месяца, тогда и вас обяжут платить НДС. "Налогоплательщиками налога на добавленную стоимость признаются: индивидуальные предприниматели (НКРФ 143.1)". Т.е. ИП признаются плательщиками налога вне зависимости от чего-либо. Но есть условия, при которых НДС можно не уплачивать. "Объектом налогообложения признаются следующие операции: реализация товаров (работ, услуг) (НКРФ 146.1)". Т.е. с позиций законодательства нет разницы между товарами, работами, услугами. Купив товар, вы уже оплатили НДС. Если вы плательщик НДС, то при продаже оплатите свой НДС, но имеете право на возврат ранее уплаченного и передаете право на выделение НДС следующему покупателю. Если вы не плательщик НДС, то просто продадите по цене без выделения НДС. При этом, если покупатель не хочет выделять НДС и готов купить по цене, включающей НДС, то это его право, но в дальнейшем при продаже, ему нужно будет оплатить НДС (если он плательщик НДС), а вернуть ранее уплаченный у него возможности не будет. Хочет потерять 18% - его право, налоговая все уже получила и ни к кому претензий не имеет. Но если вы каким-то чудом при продаже решили выделить НДС, а покупатель перепродав товар захочет вернуть ранее уплаченный налог, то тут будут траблы. Вроде как, налоговая рекомендует покупателям самим следить уплачивается ли НДС продавцами (и это входит в понятие добросовестного налогоплательщика). При этом налог вам точно не вернут, но недобросовестных могут еще и наказать, мол, вы тут уменьшить базу хотели незаконно. Предлагаю чтение букваря по НДС прекратить, поскольку для мелких ИП (до 2 млн в 3 месяца) это не актуально, а крупные ИП найдут способ эту проблему решить (бухгалтеры, аудиторы и т.п.). Сейчас подумал, есть на мой взгляд и проще способ вляпаться в НДС для ИП на УСН: просто продайте официально что-нить подакцизное или с Али (ввезенное из-за бугра).
  11. А как без обналички жить-то? Оплачивать коммуналку и покупку помидоров с расчетного счета? А если я решил маме помочь или бизнесу друга? Могут попросить дать пояснения, но ковыряться во всех движениях и мешать работе - вряд ли. Ну, и контрольная закупка будет иметь вес при доказательстве. Возможности налоговой ограничены. По закону разрешено всего несколько проверок не более скольких-то дней. Если в результате проверки налоговая ничего не нашла, то "се ля ви". А ходить каждый день по каждому новому договору - такого не будет. Поэтому, скорее всего, или планово придут для галочки, либо со 100-пудовой уверенностью в наличии нарушения. Изучаем НКРФ. Про НДС. ИП являются плательщиками НДС. Но если доход ниже некоторого порога, то можно написать заявление об освобождении от уплаты НДС. Какие-такие "несостыковки с целью взыскать НДС с ИП на УСН" можно найти в договоре кроме суммы? Наличие обязанности уплаты НДС зависит только от наличия заявления об освобождения от уплаты НДС, при всех условиях, а не не от наличия касс, продажи товаров и т.п. Да, некоторым клиентам лучше, чтоб у вас выделялся НДС, но к разработчикам это вряд ли относится. Освободится от НДС можно заявлением за 10 дней до начала налогового периода, который для НДС есть квартал. Как включить НДС назад по личной воле не знаю, т.к. не интересовался. По банки. Для новичков, вроде, есть предложения от банков. В них: если вывод налика в месяц до 150 тыр, то без комиссии.
  12. А откуда у разработчика такие контрагенты? В любом случае, там скорее всего будет играть роль само наличие договора, нежели его содержание.
  13. Неадекваты могут попросить все что угодно, и всегда нужно это в голове держать. В самом плохом случае нужно, чтоб вы просто денег не заработали, но уж точно свои деньги нужно защищать. Нужно построить отношения так, чтобы конфликт был невыгоден обеим сторонам, а завершение договора в рамках договора, наоборот - выгода и для исполнителя, и для заказчика. Например, деньги вы возвращаете (без фактически понесенных расходов, т.к. они должны быть оплачены), но ни результата работы, ни документации, ни каких-либо этапов, ни прав не передаете. Т.е. заказчик ведет экономическую деятельность, она считается рискованной, он не должен все риски перекладывать на вас, а вы не должны принимать все эти риски. Если закупаете какие-либо материалы, то их оплачивает Заказчик, а вы в случае чего ему эти расходы компенсировать не должны. Если заказчик будет против такого подхода, то и дел с ним не сделаешь, т.к. он всегда будет заинтересован расторгнуть договор через конфликт.
  14. Не понимаю, какое отношение ваш договор может иметь к ИФНС. ИФНС с вас спросит только декларации, т.е. вы честными глазами утверждаете, что заработали столько-то и посчитали сумму налога такую-то. Если у вас проверки по базовым формулам в отчете проходят, то и вопросов никаких не будет. А такую проверку способна совершать любая современная бухгалтерская программа. На упрощенке все очень просто. Но если у вас общий порядок, и вы хотите платить НДС, то при заполнении декларации по НДС вам придется заполнять раздел с книгой доходов. Там будут присутствовать выставленные счета-фактуры или иные первичные документы. У меня так вообще БСО-квитанции, выдаваемые физикам на руки за нал. Для возврата НДС придется поднапрячься. Мне кажется в ИФНС вся проверка по контрагентам идет на уровне счетов-фактур, а Договоров может и вовсе не быть. В любом магазине покупаешь радиодетали без какого-либо договора, но с счетом-фактурой. У всех может быть по-разному, но нужно понимать, что у каждой бумажки свой смысл. Договор - это типовой порядок ведения дел. По сути шаблон для вбивания сроков и суммы. Конкретные объемы должны быть в приложении с ТЗ. На основании объемов из ТЗ можно составить расчет договорной цены, где каждый пункт с объемом выразить в денежном эквиваленте. Можно составить методику приема, образец акта приема-передачи и т.п. На основании акта бухгалтерия будет перечислять деньги. Если нужен какой-либо дополнительный документооборот, упрощающий жизнь Заказчику, то можно его рассмотреть и понять, чем он может быть полезен себе. Бывает и наоборот - документацию сделаешь, а как ее Заказчику передать официально - не понятно. Обычно все теряют, а когда что-то понадобится все-равно у тебя ищут.
  15. SDRAM + stm32f429

    Получается, что ТСу нужно 40кБ прошивки превратить в 32кБ. Удачи. Можно константные массивы (звуки, картинки, таблицы) вынести по внешнюю последовательную EEPROM, если это сэкономит 10кБ памяти. Вот вы и почитайте. Узнаете, что у ТС сначала 429, потом 407, какие-то discovery... но толком в первом посте ничего не объясняется. Он попросил объяснить как SDRAM ему может помочь - ему объяснили. Но если SDRAM подойдет, то и МК придется какой-нить STM32F427V использовать с FMC (но есть у меня подозрения, что SDRAM в V-корпусе не получится). Дык, если уж докатились до смены МК, то проще взять STM32F427VI с 2МБ памяти и забыть про SDRAM и т.п. jcxz, я, пожалуй, общение с вами прекращу, т.к. создается впечатление, что какой-нить Николай Семенович взломал вашу учетку и публикует неадекватные сообщения на форуме с очевидным нарушением логики и базовых принципов. Как отвоюете учетку назад - буду рад продолжить общение.
  16. Т.е. без уведомления никакого ограничения на выезд не будет. Как я уже говорил, знакомый ИП-шник платил по первому же требованию столько, сколько начислят. Но при этом никаких деклараций не заполнял. Я, разумеется, против такого ведения дел, но и от общения с налоговой имею личное впечатление - не особо там грамотные специалисты работают. Один раз пригласили для дачи объяснений, так вся суть свелась к тому, что им нужно прикрыть себя перед вышестоящим начальством. Написал пояснения на 2 страницы, через несколько недель пришел ответ в виде копипасты моих пояснений, мол, все нормально - продолжайте трудиться дальше. Помним про статью 35 НКРФ и понимаем, что у налоговых органов тоже есть ответственность, и лишний раз никто не станет "проявлять инициативу".
  17. SDRAM + stm32f429

    Сегодня не будет, а завтра будет. Допустим половина области сплошные FF. ТС взял их под свои нужны. Завтра новая прошивка, но уже FF больше половины, и все это налезает на прошивку ТСа. Ваше "скорей всего" и есть дилетантский подход к разработке. У меня есть ТЗ, я по этому ТЗ все реализовал и выбрал соответствующие ресурсы. Разумеется профи не будет ставить 2МБ чип, когда проша со всем ТЗ умещается в 64кБ. И про ногодрыг непонятно. Это светодиодом по DMA управлять? Или UART ногодрыгом при свободных аппаратных UART? Конечно, для светодиодов индикации я использую ногодрыг и софтовые таймеры, если нужно мигание (1Гц и т.п.). Периферию гружу по максимуму, но только там где это надо. Тут вопрос другой. Что делать с недостатком памяти? Либо ставить чип объемнее, либо согласовывать и утверждать новую карту памяти. Можно навесить внешней памяти, но это затратнее толстого чипа. Все! Никаких других профессиональных, гарантированных, законных вариантов я придумать не могу. А это ваше "скорее всего" очень модное "хайли лайкли" напоминает, но вы при этом не в лучшем свете себя выставляете. Лирика: более 10 лет назад я работал в одной компании. Там был свой софт и своя база данных. Дык, никакого способа добраться до этой базы, кроме реверса не было. А автоматизировать работу хотелось. Пару вечеров, и я сделал утилитку, которая на основе этой базы генерила отчеты очень упрощающие жизнь мне, представителю заказчика и проектировщикам. Причем, последние, ну уж очень плотно на эту утилитку подсели, ибо исполнительную документацию можно было сделать гораздо точнее и быстрее. Свою работу я закончил, про утилитку забыл, а проектировщики продолжали ее использовать. Потом поменялась версия софта и чуть-чуть это затронуло базу. Я чуть-чуть поправил утилитку (по просьбе трудящихся), но разбираться пришлось практически заново (реверс новой базы). После третьего по счету реверса пришлось объяснять, проектировщикам про боль тленного мира, про варианты прямые и совсем неправильные. Мораль: свою задачку я решил тем средством каким решил. Без реверса, а полностью легально было бы долго и не факт, что руководство на это бы пошло. Сейчас всегда, когда просят какой-нить протокол интегрировать или что-то подобное, рассказываю эту историю и предупреждаю, что сегодня может работать, а завтра нет. Кто хочет - тот рискует, но я пути, не позволяющие гарантировать результат, стараюсь не выбирать.
  18. SDRAM + stm32f429

    А у меня образ под всю зарезервированную память. И тоже нет никаких проблем с расшифровкой и обновлением. А в чем проблема? В медленном и дорогом канале связи? В моих задачах нет таких проблем, и обновление прошивки для меня скорее исключение, чем норма. Можно и 2МБ залить по Ethernet за несколько секунд. Если бы обновлялся с перфокарт, то подумал бы о каждом байте, но к великой радости - такое время давно прошло. Меня - нигде. Но ходите по грани. Объясню импликацию "умные люди" "располагают за концом". Но "располагают в конце 2МБ" не означает что "человек не умный". Вам это понятно. Типа как "незнание закона" "не освобождает от ответственности". А "знание" что? "Освобождает" что ли? Согласен. Можно под прошивку использовать только часть доступной памяти с резервом на будущее. И такой подход может быть признаком умного человека. Но если ты используешь всю доступную память, то не во всех случаях это доказывает отсутствие ума. В рамках логики это утверждение не может быть ни истинным, ни ложным. Но вы решили, что это признак чудака. Теперь по сути. Какой смысл ТСу вместо этих FF записывать туда свой код? Никакого. Сегодня там FF, а завтра какой-нить HTTP-сервер. Т.е. вы с позиций умного человека советуете эту область использовать по своему усмотрению? И всякий раз когда FF сместятся при каком-нить обновлении заново собирать свое приложение с плясками по свободным местам?
  19. SDRAM + stm32f429

    Для приложения я выделил 64кБ памяти. В самом конце 4 байта - это CRC32 всех 64кБ без 4 байт. Сейчас прошивка весит 12кБ. Через месяц будет 56кБ. Где и как по вашему умный человек должен хранить CRC32, чтобы загрузчик без проблем обновил приложение и проверил корректность прошивки? Кста, файл с обновлением шифрованный вместе со всеми FF и имеет фиксированный размер и структуру. На самом деле это не имеет никакого значения, т.к. нет никаких гарантий что сейчас образ имеет в конце FF, и в будущем там ничего не появиться. Кста, ТС давно уже мог бы и прояснить что там в этом мегабайте? FF-ы, CRC32 или данные? А то некоторые, вместо того, чтобы задать правильный вопрос, уже в какой раз включают режим телепата и оскорбляют пользователей почем зря. jcxz что-то вы в последнее время ведете себя как не профессионал. Опыт и знания чувствуются есть, но манера общения недружелюбная. Люди на форум приходят за помощью, а не для того, чтобы их унижали, оскорбляли или воспитывали. Имхо.
  20. SDRAM + stm32f429

    Возможно. Но у меня, к примеру, корректность прошивки контролируется путем подсчета CRC32 по всей отведенной для нее памяти. Т.е. вполне могут быть FF, а в конце 4 байта CRC32.
  21. А на месте отслюнявить не получится? Мне кажется, погасил все штрафы, показал квитанцию, и садись на рейс обратно. Он от оплаты не отказывается никак. Более того - ходил он в налоговую, ему там, предлагают: "заплатите 13% НДФЛ". Он берет и платит, хотя ИП на УСН и мог бы 6% только заплатить. Короче, вопрос не в оплате, а в отчетности. Меня это особо поразило, т.к. примерно в то же время делал для жены (репетитор по патенту) отчетность в налоговую: декларацию по НДФЛ и, внимание... по НДС!
  22. SDRAM + stm32f429

    В общем случае, лучше выбрать МК с большим объемом Flash, благо такие существуют. Или уговаривать разработчиков на другую карту распределения памяти. Все остальное - усложнения жизни, по масштабу несравнимые с первым вариантом. Но я бы попробовал подрезать app_flash в пользу rom, уговорив разработчиков. По сути нужно где-то только поправить константы.
  23. У меня одногруппник бывший вел ИП, но в экстремально пофигистическом режиме. Никаких налогов не платил, с декларациями не запаривался. Мол, у него приставы сами со счета сколько надо списывали :))
  24. Я не понимаю вопроса. У нас все хорошо, никакого аллокейшина не чувствуем. Что спрашивать? Почему убрали цены и наличие с сайта? Дык, ответ будет - пользуйтесь СДС. Обращаю внимание, что Компэл уже убирал временно цены и наличие с сайта, но потом вернул. Точный период указать не могу, но около 05 октября 2016 года цен на сайте не было. Затем, как мы все знаем - цены вернулись на сайт. Аллокейшн? Не думаю.
  25. SDRAM + stm32f429

    А не проще какую-нить NOR-память задействовать? Иначе придется из какого-то внешнего энергонезависимого хранилища копировать все в SDRAM, а оттуда уже запускать. При этом в это внешнее хранилище часть прошивку нужно будет как-то записать. Аналогично и с NOR, придется как-то туда прошивку записывать, но можно исполнять код прямо из NOR, без копирования в SDRAM.
×
×
  • Создать...