Ukuran memori flash bawaan tidak cukup

11

Saya menggunakan pengontrol TM4C1230C3PMI dari instrumen Texas di salah satu proyek saya. Ini memiliki 32KB internal flash, yang tidak cukup untuk aplikasi saya. Micro-controller berukuran flash yang lebih tinggi tersedia di pasaran yang dapat digunakan tetapi saya ingin menggunakan micro-controller ini saja. Sesuai pengetahuan saya, EEPROM eksternal dapat digunakan untuk meningkatkan ukuran total flash (memori Program).

Apakah pemikiran saya benar?

Jika tidak, tolong sarankan bagaimana saya dapat meningkatkan ukuran memori flash total controller?

Sanjeev Kumar
sumber
1
EEPROM eksternal biasanya digunakan untuk menyimpan data karena Flash internal memungkinkan lebih sedikit menghapus / menulis siklus daripada kebanyakan EEPROM dan dapat ditimpa byte-bijaksana. Untuk CPU dengan antarmuka bus eksternal (yang Anda tidak miliki ini) dimungkinkan untuk menambahkan memori program eksternal (namun ini agak rumit ...). Secara teoritis akan mungkin untuk menyimpan potongan-potongan kode dalam EEPROM eksternal dan untuk memuat kode ini ke RAM untuk menjalankannya - namun dalam kebanyakan kasus skenario ini tidak realistis.
Martin Rosenau
3
Bertahun-tahun yang lalu, pepatah terkait adalah "Jika Anda tidak bisa melakukannya dalam 1K, Anda tidak bisa melakukannya." Saya pikir itu pintar dan layak untuk dipikirkan, tetapi tidak benar-benar menerimanya. Kemudian MicroChess tiba di 1K.
user2338816
1
Mengapa Anda tidak mem-boot kode Anda dari memori eksternal? Ada sejumlah memori eksternal yang dapat dihubungkan ke UC Anda. Ini tidak akan menempatkan kendala pada flash internal Anda karena Anda akan mem-boot kode Anda secara eksternal.
AlphaGoku

Jawaban:

22

Anda tidak dapat menambah memori program (flash). TI menghasilkan chip yang sama dengan menggandakan flash dan RAM, tetapi tidak ada yang berubah: TM4C1230D5PMI .

Jika Anda tidak dapat menggunakan chip dengan flash yang lebih besar, Anda harus mengurangi ukuran kode Anda:

  • Nonaktifkan debugging, seperti printffungsi yang mahal . A printfyang mendukung output floating point biasanya akan membuat Anda kembali sekitar 5KB-10KB.
  • Pastikan Anda mengkompilasi dengan optimisasi diaktifkan - biasanya flag kompiler adalah -Os.
  • Kompiler modern dapat melakukan optimasi waktu tautan (LTO) . Dengan gcc, Anda mendapatkannya -flto. Anda harus melewati -fltotahap kompilasi dan tautan, untuk semua file. Ini biasanya mengurangi ukuran kode yang dihasilkan hingga 30% -50%.
corecode
sumber
2

Anda mungkin mendapatkan jejak perangkat lunak terkecil dengan menggunakan assembler dan bahasa sejenis untuk yang dirancang untuk tujuan Anda. Lain adalah kode mesin terkompresi jika ada banyak kode yang hampir identik.

Mikkel Alan Stokkebye Christia
sumber