Я давно хочу иметь модель для PSoC. Но не знаю даже, с какой стороны подойти. Его архитектура подразумевает переключение "навесных" блоков (реализованных внутри чипа) "на лету", для чего имеются регистры ног и внутренних шин. Короче, непривычно-с. Любая нога, к примеру, может конфигурироваться так:
1) цифровой (или аналоговый) вход (или выход) "навесного" блока;
2) StdCPU (на мое усмотрение):
- High Z
- High Z Analog
- Open Drain High
- Open Drain Low
- Pull Down
- Pull Up
- Strong
- Strong Low
Как видите, состояний больше, чем поддерживает Labcenter VSMSDK.
Кроме того - SPI, UART, I2C и прочее можно назначить на произвольные ноги, причем сразу несколько SPI, несколько UART и несколько I2C.
Ну так вот, при отсутствии модели для отладки вместо PSoC используется AVR (лучше всего Atmega12
- только с настоящими внешними блоками, а недостающие Digital Comm берутся из чего-нибудь помельче - A8, A16, A32, и все это связывается в кучу.
Поскольку программы кроме управления ногами еще что-то делают, это что-то можно моделировать на чем-угодно, а стандартные коммуникации убрать в библиотеки. Тогда и PSoC, и AVR работают с одной и той же программой (HEXы разные!). Компиляторы у них - братья (IMAGECRAFT).
Т.е. в проекте 2 разных файла "main.c" - в одном написано "#define PSOC..", в другом - "#define ICC".