## ✅ تحلیل ساختار جدید تولید کد در SquareLine Studio 1.5.2
### 1. جداسازی واضح صفحات (Screens)
هر اسکرین فایل مخصوص خودش را دارد:
*
*
این باعث میشه کد:
* ماژولارتر (Modular)
* قابل نگهداریتر
* و مناسبتر برای مدیریت رم و حافظه باشه
### 2. توابع مدیریت حافظه برای هر صفحه
در هر فایل
*
*
### 3. متغیرهای global فقط برای صفحه مربوطه
مثلاً در
و نه هیچ عنصر از صفحات دیگر.
### 4. ساختار رویدادها (Events) هم منظم شده
برای هر رویداد، تابع خاصی در فایل صفحه تعریف میشه:
که یعنی دیگر نیازی به یک فایل
### 5. ورود و خروج صفحه بهینه شده
در فایل
با تغییر صفحه:
* صفحه جدید ساخته میشه (init)
* صفحه قبلی حذف میشه (destroy)
در نتیجه در لحظه فقط یک صفحه در حافظه هست! 💡
---
## ✅ نتیجهگیری کلی
🔹 SquareLine Studio 1.5.2 واقعاً بهینهتر و حرفهایتر شده
برای پروژههای روی بردهای با RAM پایین (مثل V3s یا STM32)، این ساختار باعث میشه رم هدر نره.
🔹 این نسخه بهشدت برای پروژههایی با چند صفحه توصیه میشه، چون:
* ساختار تمیز و جداگانه برای هر صفحه داره
* حافظه بهدرستی آزاد میشه
* کد راحتتر قابل توسعه و دیباگ هست
### 1. جداسازی واضح صفحات (Screens)
هر اسکرین فایل مخصوص خودش را دارد:
*
.c
برای پیادهسازی اجزا*
.h
برای اعلام توابع و اشیاءاین باعث میشه کد:
* ماژولارتر (Modular)
* قابل نگهداریتر
* و مناسبتر برای مدیریت رم و حافظه باشه
### 2. توابع مدیریت حافظه برای هر صفحه
در هر فایل
.c
توابع زیر دیده میشن:*
screen_init()
→ ساخت کامل اجزا*
screen_destroy()
→ حذف تمام ویجتها و آزادسازی حافظه با lv_obj_del()
### 3. متغیرهای global فقط برای صفحه مربوطه
مثلاً در
ui_Screen1.h
فقط اجزای مربوط به همان صفحه تعریف شدهاند:extern lv_obj_t * ui_Screen1;
extern lv_obj_t * ui_Button1;
و نه هیچ عنصر از صفحات دیگر.
### 4. ساختار رویدادها (Events) هم منظم شده
برای هر رویداد، تابع خاصی در فایل صفحه تعریف میشه:
extern void ui_event_Button1(lv_event_t * e);
که یعنی دیگر نیازی به یک فایل
ui_events.c
برای همهی رویدادها نیست و همین باعث تفکیک بهتر پروژه شده.### 5. ورود و خروج صفحه بهینه شده
در فایل
ui.c
:_ui_screen_change(&ui_Screen2, ..., &ui_Screen2_screen_init);
با تغییر صفحه:
* صفحه جدید ساخته میشه (init)
* صفحه قبلی حذف میشه (destroy)
در نتیجه در لحظه فقط یک صفحه در حافظه هست! 💡
---
## ✅ نتیجهگیری کلی
🔹 SquareLine Studio 1.5.2 واقعاً بهینهتر و حرفهایتر شده
برای پروژههای روی بردهای با RAM پایین (مثل V3s یا STM32)، این ساختار باعث میشه رم هدر نره.
🔹 این نسخه بهشدت برای پروژههایی با چند صفحه توصیه میشه، چون:
* ساختار تمیز و جداگانه برای هر صفحه داره
* حافظه بهدرستی آزاد میشه
* کد راحتتر قابل توسعه و دیباگ هست
🔴 عَنِ الْمُفَضَّلِ قَالَ: قَالَ أَبُو عَبْدِ اللهِ علیه السلام: يَا مُفَضَّلُ، إِيَّاكَ وَ الذُّنُوبَ، وَ حَذِّرْهَا شِيعَتَنَا. فَوَ اللهِ مَا هِيَ إِلَى أَحَدٍ أَسْرَعَ مِنْهَا إِلَيْكُمْ، إِنَّ أَحَدَكُمْ لَتُصِيبُهُ الْمَعَرَّةُ مِنَ السُّلْطَانِ، وَ مَا ذَاكَ إِلَّا بِذُنُوبِهِ، وَ إِنَّهُ لَيُصِيبُهُ السُّقْمُ، وَ مَا ذَاكَ إِلَّا بِذُنُوبِهِ، وَ إِنَّهُ لَيُحْبَسُ عَنْهُ الرِّزْقُ، وَ مَا هُوَ إِلَّا بِذُنُوبِهِ، وَ إِنَّهُ لَيُشَدَّدُ عَلَيْهِ عِنْدَ الْمَوْتِ، وَ مَا هُوَ إِلَّا بِذُنُوبِهِ.
🟠 مفضّل بن عمر از امام صادق علیه السّلام نقل می کند که فرمودند : اى مفضّل! تو را از تمام گناهان برحذر می دارم، و تو نیز شيعيان ما را از آن بر حذر بدار. به خدا سوگند! اثر هیچ چیزی سریع تر از اثر گناه به شما نمی رسد. اگر آزار و اذیّتی از سلطان به يكى از شما رسيد، قطعاً به خاطر گناهی است كه انجام داده است. اگر یکی از شما بيمار شد، حتماً به جهت گناهى است كه انجام داده است. اگر رزق و روزى از کسی حبس شد، صرفاً به خاطر گناهى است كه از او صادر گرديده است. اگر هنگام مرگ، کسی به سختی جان داد، فقط به خاطر گناهی است که مرتکب شده است.
📚علل الشرائع ج1، ص297
🟠 مفضّل بن عمر از امام صادق علیه السّلام نقل می کند که فرمودند : اى مفضّل! تو را از تمام گناهان برحذر می دارم، و تو نیز شيعيان ما را از آن بر حذر بدار. به خدا سوگند! اثر هیچ چیزی سریع تر از اثر گناه به شما نمی رسد. اگر آزار و اذیّتی از سلطان به يكى از شما رسيد، قطعاً به خاطر گناهی است كه انجام داده است. اگر یکی از شما بيمار شد، حتماً به جهت گناهى است كه انجام داده است. اگر رزق و روزى از کسی حبس شد، صرفاً به خاطر گناهى است كه از او صادر گرديده است. اگر هنگام مرگ، کسی به سختی جان داد، فقط به خاطر گناهی است که مرتکب شده است.
📚علل الشرائع ج1، ص297
🔴 قالَ لَهُ الرَّشيدُ حينَ رَآهُ جالساً عِنْدَ الْكَعْبَة ، أنتَ الَّذی تُبايِعُكَ النّاسُ سِرًّا؟ فَقالَ ؛ أنا إمامُ القلوبِ و أنتَ إمامُ الجُسُوم .
🟠 روزی هارون الرشيد لعنة الله علیه وقتی امام موسی کاظم سلام الله علیه را ديد که در کنار کعبه نشسته اند ، به او گفت تو هستی که مردم با تو در پنهان بيعت میکنند؟ حضرت در پاسخ فرمودند: من امام قلب ها هستم و تو امام جسم ها .
📚الصواعق المحرقة ج۲ ص۵۹۰
🟠 روزی هارون الرشيد لعنة الله علیه وقتی امام موسی کاظم سلام الله علیه را ديد که در کنار کعبه نشسته اند ، به او گفت تو هستی که مردم با تو در پنهان بيعت میکنند؟ حضرت در پاسخ فرمودند: من امام قلب ها هستم و تو امام جسم ها .
📚الصواعق المحرقة ج۲ ص۵۹۰
📊 تعداد سیمهای LVDS موردنیاز بر اساس رزولوشن و عمق رنگ
برای اتصال LCDهای LVDS به سیستمهای پردازشی، تعداد جفت سیمهای LVDS (Data و Clock) به رزولوشن و عمق رنگ پنل بستگی داره. در ادامه جدول استاندارد اون رو میبینید:
📌 رزولوشن و تعداد سیمهای LVDS:
📌 800×480
🌈 عمق رنگ: 16 یا 18 بیت
🔌 Single Channel
🔸 3 جفت سیم دیتا + 1 جفت کلاک = 8 سیم
📌 1024×600
🌈 عمق رنگ: 18 بیت
🔌 Single Channel
🔸 3 جفت سیم دیتا + 1 جفت کلاک = 8 سیم
📌 1280×800
🌈 عمق رنگ: 16 بیت
🔌 Single Channel
🔸 3 جفت سیم دیتا + 1 جفت کلاک = 8 سیم
📌 1280×800
🌈 عمق رنگ: 24 بیت
🔌 Single Channel
🔸 4 جفت سیم دیتا + 1 جفت کلاک = 10 سیم
📌 1366×768
🌈 عمق رنگ: 24 بیت
🔌 Single Channel
🔸 4 جفت سیم دیتا + 1 جفت کلاک = 10 سیم
📌 1600×900
🌈 عمق رنگ: 24 بیت
🔌 Single Channel
🔸 5 جفت سیم دیتا + 1 جفت کلاک = 12 سیم
📌 1920×1080 (Full HD)
🌈 عمق رنگ: 24 بیت
🔌 Dual Channel
🔸 8 جفت سیم دیتا + 2 جفت کلاک = 20 سیم
📌 1920×1200
🌈 عمق رنگ: 24 بیت
🔌 Dual Channel
🔸 8 جفت سیم دیتا + 2 جفت کلاک = 20 سیم
📌 2560×1440 (QHD)
🌈 عمق رنگ: 24 بیت
🔌 Dual Channel
🔸 8 جفت سیم دیتا + 2 جفت کلاک = 20 سیم
📌 3840×2160 (4K)
🌈 عمق رنگ: 24 یا 30 بیت
🔌 Quad Channel LVDS
🔸 16 جفت سیم دیتا + 4 جفت کلاک = 40 سیم
📌 نکته:
به این سیمها باید چند سیم تغذیه (۳.۳V / ۵V)، Ground و سیگنالهای کنترلی مثل BL_ON و PWM_DIM رو هم اضافه کنید.
برای اتصال LCDهای LVDS به سیستمهای پردازشی، تعداد جفت سیمهای LVDS (Data و Clock) به رزولوشن و عمق رنگ پنل بستگی داره. در ادامه جدول استاندارد اون رو میبینید:
📌 رزولوشن و تعداد سیمهای LVDS:
📌 800×480
🌈 عمق رنگ: 16 یا 18 بیت
🔌 Single Channel
🔸 3 جفت سیم دیتا + 1 جفت کلاک = 8 سیم
📌 1024×600
🌈 عمق رنگ: 18 بیت
🔌 Single Channel
🔸 3 جفت سیم دیتا + 1 جفت کلاک = 8 سیم
📌 1280×800
🌈 عمق رنگ: 16 بیت
🔌 Single Channel
🔸 3 جفت سیم دیتا + 1 جفت کلاک = 8 سیم
📌 1280×800
🌈 عمق رنگ: 24 بیت
🔌 Single Channel
🔸 4 جفت سیم دیتا + 1 جفت کلاک = 10 سیم
📌 1366×768
🌈 عمق رنگ: 24 بیت
🔌 Single Channel
🔸 4 جفت سیم دیتا + 1 جفت کلاک = 10 سیم
📌 1600×900
🌈 عمق رنگ: 24 بیت
🔌 Single Channel
🔸 5 جفت سیم دیتا + 1 جفت کلاک = 12 سیم
📌 1920×1080 (Full HD)
🌈 عمق رنگ: 24 بیت
🔌 Dual Channel
🔸 8 جفت سیم دیتا + 2 جفت کلاک = 20 سیم
📌 1920×1200
🌈 عمق رنگ: 24 بیت
🔌 Dual Channel
🔸 8 جفت سیم دیتا + 2 جفت کلاک = 20 سیم
📌 2560×1440 (QHD)
🌈 عمق رنگ: 24 بیت
🔌 Dual Channel
🔸 8 جفت سیم دیتا + 2 جفت کلاک = 20 سیم
📌 3840×2160 (4K)
🌈 عمق رنگ: 24 یا 30 بیت
🔌 Quad Channel LVDS
🔸 16 جفت سیم دیتا + 4 جفت کلاک = 40 سیم
📌 نکته:
به این سیمها باید چند سیم تغذیه (۳.۳V / ۵V)، Ground و سیگنالهای کنترلی مثل BL_ON و PWM_DIM رو هم اضافه کنید.
🔴 قالَ: کَانَ رَجُلٌ مِنْ أَبَانِ بْنِ دَارِمٍ یُقَالُ لَهُ زُرْعَةُ شَهِدَ قَتْلَ الْحُسَیْنِ علیه السلام فَرَمَی الْحُسَیْنَ بِسَهْمٍ فَأَصَابَ حَنَکَهُ فَجَعَلَ یَتَلَقَّی الدَّمَ ثُمَّ یَقُولُ هَکَذَا إِلَی السَّمَاءِ فَیَرْمِی بِهِ وَ ذَلِکَ أَنَّ الْحُسَیْنَ علیه السلام دَعَا بِمَاءٍ لِیَشْرَبَ فَلَمَّا رَمَاهُ حَالَ بَیْنَهُ وَ بَیْنَ الْمَاءِ فَقَالَ اللَّهُمَّ ظَمِّئْهُ اللَّهُمَّ ظَمِّئْهُ قَالَ فَحَدَّثَنِی مَنْ شَهِدَهُ وَ هُوَ یَمُوتُ وَ هُوَ یَصِیحُ مِنَ الْحَرِّ فِی بَطْنِهِ وَ الْبَرْدِ فِی ظَهْرِهِ وَ بَیْنَ یَدَیْهِ الْمَرَاوِحُ وَ الثَّلْجُ وَ خَلْفَهُ الْکَانُونُ وَ هُوَ یَقُولُ اسْقُونِی أَهْلَکَنِی الْعَطَشُ فَیُؤْتَی بِعُسٍّ عَظِیمٍ فِیهِ السَّوِیقُ وَ الْمَاءُ وَ اللَّبَنُ لَوْ شَرِبَهُ خَمْسَةٌ لَکَفَاهُمْ قَالَ فَیَشْرَبُهُ ثُمَّ یَعُودُ فَیَقُولُ اسْقُونِی أَهْلَکَنِی الْعَطَشُ قَالَ فَانْقَدَّ بَطْنُهُ کَانْقِدَادِ الْبَعِیرِ. وَ ذَکَرَ أَعْثَمُ الْکُوفِیُّ هَذَا الْحَدِیثَ مُخْتَصَراً قَالَ: اسْمُ الرَّامِی لَعَنَهُ اللَّهُ عَبْدُ الرَّحْمَنِ الْأَزْدِیُّ فَقَالَ لَهُ الْحُسَیْنُ علیه السلام اللَّهُمَّ اقْتُلْهُ عَطَشاً وَ لَا تَغْفِرْ لَهُ أَبَداً قَالَ الْقَاسِمُ بْنُ أَصْبَغَ لَقَدْ رَأَیْتُنِی عِنْدَ ذَلِکَ الرَّجُلِ وَ هُوَ یَصِیحُ وَ الْمَاءُ یُبَرَّدُ لَهُ فِیهِ السُّکَّرُ وَ الْأَعْسَاسُ فِیهَا اللَّبَنُ وَ هُوَ یَقُولُ وَیْلَکُمْ اسْقُونِی فَقَدْ قَتَلَنِیَ الْعَطَشُ فَیُعْطَی الْقُلَّةَ أَوِ الْعُسَّ فَإِذَا نَزَعَهُ مِنْ فِیهِ یَصِیحُ حَتَّی انْقَدَّ بَطْنُهُ وَ مَاتَ شَرَّ مِیتَةٍ لَعَنَهُ اللَّهُ.
⚫️محمد کوفی میگوید: مردی از قبیله ابان بن دارم که به او زرعه گفته میشد، در قتل حسین علیه السّلام شرکت کرده بود و تیری به سمت امام انداخته بود که به گلوی حضرت اصابت کرده بود! این مرد خون بالا میآورد و سپس میگفت: این چنین به آسمان میرود، پس او را با آن رمی میکنند! و علت آن بود که امام حسین علیه السّلام آب طلب کرد تا بنوشد، وقتی به حضرت تیر زد، بین امام و آب جدایی انداخت. پس حضرت عرض کرد: خدایا او را تشنه فرما! خدایا او را تشنه فرما! راوی میگوید: کسی که این مرد را در حال مرگ دیده بود، برای من حدیث کرد که از حرارت در شکمش فریاد میزد و در مقابلش بادبزن و یخ بود و پشت سرش حرارت بود و میگفت: آبم دهید که عطش مرا کشت! برایش قدح عظیمی که آب گوشت و آب و شیر بود میآوردند که اگر پنج نفر آن را میخوردند برایشان کافی بود! آن مرد این طعام را میخورد و سپس میگفت: آبم دهید که عطش مرا کشت. راوی میگوید: شکمش مثل شکافتن شکم شتر شکافته شد. اعثم کوفی این حدیث را به اختصار نقل نموده و گفته: اسم پرتاب کننده تیر عبدالرحمان ازدی لعنه الله بود. پس امام حسین علیه السّلام در حق او چنین دعا کرد: خدایا او را به عطش بکش و ابدا او را نیامرز! قاسم بن اصبغ میگوید: من خویش را نزد آن مرد دیدم که فریاد میزد و آب برایش خنک میکردند و در آن شکر و ظرفی که شیر داشت میآوردند، اما او میگفت: وای بر شما! مرا آب دهید که عطش مرا کشت! پس به او کوزه و قدح داده میشد. وقتی این ظروف را از دهانش جدا میکرد، فریاد میزد تا شکمش میشکافت و به بدترین مردن جان داد! لعنت خدا بر او باد!
📚مناقب ابن شهر آشوب ۴: ۵۷
⚫️محمد کوفی میگوید: مردی از قبیله ابان بن دارم که به او زرعه گفته میشد، در قتل حسین علیه السّلام شرکت کرده بود و تیری به سمت امام انداخته بود که به گلوی حضرت اصابت کرده بود! این مرد خون بالا میآورد و سپس میگفت: این چنین به آسمان میرود، پس او را با آن رمی میکنند! و علت آن بود که امام حسین علیه السّلام آب طلب کرد تا بنوشد، وقتی به حضرت تیر زد، بین امام و آب جدایی انداخت. پس حضرت عرض کرد: خدایا او را تشنه فرما! خدایا او را تشنه فرما! راوی میگوید: کسی که این مرد را در حال مرگ دیده بود، برای من حدیث کرد که از حرارت در شکمش فریاد میزد و در مقابلش بادبزن و یخ بود و پشت سرش حرارت بود و میگفت: آبم دهید که عطش مرا کشت! برایش قدح عظیمی که آب گوشت و آب و شیر بود میآوردند که اگر پنج نفر آن را میخوردند برایشان کافی بود! آن مرد این طعام را میخورد و سپس میگفت: آبم دهید که عطش مرا کشت. راوی میگوید: شکمش مثل شکافتن شکم شتر شکافته شد. اعثم کوفی این حدیث را به اختصار نقل نموده و گفته: اسم پرتاب کننده تیر عبدالرحمان ازدی لعنه الله بود. پس امام حسین علیه السّلام در حق او چنین دعا کرد: خدایا او را به عطش بکش و ابدا او را نیامرز! قاسم بن اصبغ میگوید: من خویش را نزد آن مرد دیدم که فریاد میزد و آب برایش خنک میکردند و در آن شکر و ظرفی که شیر داشت میآوردند، اما او میگفت: وای بر شما! مرا آب دهید که عطش مرا کشت! پس به او کوزه و قدح داده میشد. وقتی این ظروف را از دهانش جدا میکرد، فریاد میزد تا شکمش میشکافت و به بدترین مردن جان داد! لعنت خدا بر او باد!
📚مناقب ابن شهر آشوب ۴: ۵۷
امروز میخوام براتون خیلی ساده و شفاف تفاوت eMMC و SD Card رو از نظر اتصال به میکروکنترلر و سرعت و کاربرد توضیح بدم.
📦 eMMC چیه؟
eMMC یک چیپ حافظه فلش داخلیه که مستقیم روی برد لحیم میشه و از طریق رابط SDMMC (یا eMMC interface) به میکروکنترلر یا پردازنده وصل میشه.
✔️ کنترلر داخلی داره
✔️ باس دیتا ۸ بیتی داره
✔️ سرعت بالا و تاخیر پایین
✔️ مخصوص ذخیره سیستم عامل و دیتاهای حیاتی
📦 SD Card چیه؟
SD Card حافظهایه که همه میشناسیم.
✔️ از طریق اسلات SD Card و باس SDMMC به میکرو وصل میشه
✔️ معمولاً ۱ یا ۴ خط دیتا داره
✔️ سرعت پایینتر
✔️ قابل جابجایی
📌 نحوه اتصال به میکروکنترلر:
eMMC → به پایههای
CMD
CLK
DAT0-DAT7
VCC
VCCQ
GND
RST_N
SD Card → به پایههای
CMD
CLK
DAT0-DAT3
VCC
GND
در هر دو، از Peripheral SDMMC یا SDIO میکرو استفاده میشه (مثل STM32H743)
📊 مقایسه سرعت:
سرعت خواندن eMMC: حدود 200MB/s
سرعت نوشتن eMMC: حدود 100MB/s
سرعت خواندن SD Card (UHS-I): حدود 100MB/s
سرعت نوشتن SD Card: حدود 30MB/s
تاخیر در eMMC کمتره چون روی بورد لحیم شده و باس اختصاصی داره.
📌 پایداری و طول عمر:
eMMC: بسیار بالا (مخصوص سیستمهای صنعتی و سیستمعامل)
SD Card: متوسط (مناسب دیتاهای غیرحیاتی)
📌 کجا از کدوم استفاده کنیم؟
eMMC:
برای بوت سیستمعامل
برای ذخیره دیتای حیاتی
برای دیتالاگرهای صنعتی
SD Card:
برای ذخیره عکس و فیلم
برای ذخیره دیتاهای موقت
برای دستگاههای ساده و ارزان
📣 نکته مهم
eMMC توی میکروکنترلرهایی که SDMMC دارند خیلی راحت راهاندازی میشه.
همون دستوراتی که برای SD Card میفرستی (مثل CMD0 و CMD1) میتونی به eMMC هم بفرستی.
فقط باید پایههای DAT0-DAT7 رو هم آماده کنی.
در SD Card معمولاً فقط تا ۴ خط دیتا (DAT0-DAT3) استفاده میشه.
✅ نتیجه
اگه سرعت و پایداری برات مهمه و سیستمعامل یا دیتای حیاتی داری → eMMC
اگه ارزونی و قابلیت جابجایی میخوای → SD Card
📦 eMMC چیه؟
eMMC یک چیپ حافظه فلش داخلیه که مستقیم روی برد لحیم میشه و از طریق رابط SDMMC (یا eMMC interface) به میکروکنترلر یا پردازنده وصل میشه.
✔️ کنترلر داخلی داره
✔️ باس دیتا ۸ بیتی داره
✔️ سرعت بالا و تاخیر پایین
✔️ مخصوص ذخیره سیستم عامل و دیتاهای حیاتی
📦 SD Card چیه؟
SD Card حافظهایه که همه میشناسیم.
✔️ از طریق اسلات SD Card و باس SDMMC به میکرو وصل میشه
✔️ معمولاً ۱ یا ۴ خط دیتا داره
✔️ سرعت پایینتر
✔️ قابل جابجایی
📌 نحوه اتصال به میکروکنترلر:
eMMC → به پایههای
CMD
CLK
DAT0-DAT7
VCC
VCCQ
GND
RST_N
SD Card → به پایههای
CMD
CLK
DAT0-DAT3
VCC
GND
در هر دو، از Peripheral SDMMC یا SDIO میکرو استفاده میشه (مثل STM32H743)
📊 مقایسه سرعت:
سرعت خواندن eMMC: حدود 200MB/s
سرعت نوشتن eMMC: حدود 100MB/s
سرعت خواندن SD Card (UHS-I): حدود 100MB/s
سرعت نوشتن SD Card: حدود 30MB/s
تاخیر در eMMC کمتره چون روی بورد لحیم شده و باس اختصاصی داره.
📌 پایداری و طول عمر:
eMMC: بسیار بالا (مخصوص سیستمهای صنعتی و سیستمعامل)
SD Card: متوسط (مناسب دیتاهای غیرحیاتی)
📌 کجا از کدوم استفاده کنیم؟
eMMC:
برای بوت سیستمعامل
برای ذخیره دیتای حیاتی
برای دیتالاگرهای صنعتی
SD Card:
برای ذخیره عکس و فیلم
برای ذخیره دیتاهای موقت
برای دستگاههای ساده و ارزان
📣 نکته مهم
eMMC توی میکروکنترلرهایی که SDMMC دارند خیلی راحت راهاندازی میشه.
همون دستوراتی که برای SD Card میفرستی (مثل CMD0 و CMD1) میتونی به eMMC هم بفرستی.
فقط باید پایههای DAT0-DAT7 رو هم آماده کنی.
در SD Card معمولاً فقط تا ۴ خط دیتا (DAT0-DAT3) استفاده میشه.
✅ نتیجه
اگه سرعت و پایداری برات مهمه و سیستمعامل یا دیتای حیاتی داری → eMMC
اگه ارزونی و قابلیت جابجایی میخوای → SD Card
أَلسَّلامُ عَلَى الشَّیْبِ الْخَضیبِ،
سلام بر آن محاسن بخون خضاب شده،
أَلسَّلامُ عَلَى الْخَدِّ التَّریبِ،
سلام بر آن گونه خاک آلوده،
أَلسَّلامُ عَلَى الْبَدَنِ السَّلیبِ،
سلام بر آن بدن جامه به غنیمت رفته،
أَلسَّلامُ عَلَى الثَّغْرِ الْمَقْرُوعِ بِالْقَضیبِ،
سلام بر آن دندآنهایی که با چوب خیزران زده شده،
أَلسَّلامُ عَلَى الرَّأْسِ الْمَرْفُوعِ،
سلام برآن سر بالاى نیزه رفته،
سلام بر آن محاسن بخون خضاب شده،
أَلسَّلامُ عَلَى الْخَدِّ التَّریبِ،
سلام بر آن گونه خاک آلوده،
أَلسَّلامُ عَلَى الْبَدَنِ السَّلیبِ،
سلام بر آن بدن جامه به غنیمت رفته،
أَلسَّلامُ عَلَى الثَّغْرِ الْمَقْرُوعِ بِالْقَضیبِ،
سلام بر آن دندآنهایی که با چوب خیزران زده شده،
أَلسَّلامُ عَلَى الرَّأْسِ الْمَرْفُوعِ،
سلام برآن سر بالاى نیزه رفته،
🎯 آموزش کامل دستور make و make -jN برای لینوکس Tina (T113-S3)
💡 وقتی داری پروژههای بزرگ مثل Kernel یا Rootfs رو برای T113-S3 کامپایل میکنی، دو روش اصلی برای اجرای
---
🛠 ۱. اجرای ساده:
* اجرا به صورت تکریسمانی (Single-thread)
* فقط یک هسته CPU استفاده میشه 🐌
* سرعت پایین، ولی مصرف RAM کمتر
---
⚡️ ۲. اجرای چندریسمانی:
*
* هر Job یک هسته CPU رو اشغال میکنه
* سرعت بسیار بالاتر 🚀
📌 برای فهمیدن تعداد هستههای CPU:
📌 مثال: اگه CPU شما 4 هسته داره:
یا حتی:
که خودش به طور خودکار تعداد هستهها رو پیدا میکنه.
---
⚠️ نکته مهم:
* اگه RAM کم باشه، مقدار N رو خیلی زیاد نذار چون سیستم ممکنه کند یا حتی هنگ کنه.
* پیشنهاد من: تعداد هستهها + ۱ (مثلاً CPU چهار هستهای →
---
📦 بعد از کامپایل، دیدن فایلهای خروجی:
بعد از اتمام `make`، برای دیدن اندازه و مشخصات فایلهای ساختهشده:
📌 این دستور فایلهای ایمیج، بوتلودر و بقیه خروجیها رو با حجم و تاریخ نشون میده.
💡 وقتی داری پروژههای بزرگ مثل Kernel یا Rootfs رو برای T113-S3 کامپایل میکنی، دو روش اصلی برای اجرای
make
داری:---
🛠 ۱. اجرای ساده:
make
* اجرا به صورت تکریسمانی (Single-thread)
* فقط یک هسته CPU استفاده میشه 🐌
* سرعت پایین، ولی مصرف RAM کمتر
---
⚡️ ۲. اجرای چندریسمانی:
make -jN
*
N
یعنی تعداد Jobهای همزمان* هر Job یک هسته CPU رو اشغال میکنه
* سرعت بسیار بالاتر 🚀
📌 برای فهمیدن تعداد هستههای CPU:
nproc
📌 مثال: اگه CPU شما 4 هسته داره:
make -j4
یا حتی:
make -j$(nproc)
که خودش به طور خودکار تعداد هستهها رو پیدا میکنه.
---
⚠️ نکته مهم:
* اگه RAM کم باشه، مقدار N رو خیلی زیاد نذار چون سیستم ممکنه کند یا حتی هنگ کنه.
* پیشنهاد من: تعداد هستهها + ۱ (مثلاً CPU چهار هستهای →
make -j5
)---
📦 بعد از کامپایل، دیدن فایلهای خروجی:
بعد از اتمام `make`، برای دیدن اندازه و مشخصات فایلهای ساختهشده:
ls -lh out/target/t113-mq_r/
📌 این دستور فایلهای ایمیج، بوتلودر و بقیه خروجیها رو با حجم و تاریخ نشون میده.
🎯 راهنمای کامل فایلهای خروجی بعد از کامپایل T113-S3 🎯
📌 مخصوص کسایی که با Tina Linux کار میکنن و میخوان بدونن هر فایل به چه درد میخوره!
---
📂 وقتی پروژه رو کامپایل میکنی، تو پوشه out/ کلی فایل تولید میشه. اینا مهمترینهاش هستن:
---
1️⃣ `boot0_sdcard_sun8iw20p1.bin` 🥾💽
بوتلودر اولیه برای بوت از SD Card. بدون این، CPU اصلاً نمیفهمه باید چی لود کنه.
---
2️⃣ `boot0_nand_sun8iw20p1.bin` 🥾📦
بوتلودر اولیه برای بوت از NAND Flash. فقط وقتی از حافظه داخلی NAND استفاده میکنی کاربرد داره.
---
3️⃣ `boot0_spinor_sun8iw20p1.bin` 🥾📜
همون بوتلودر ولی برای SPI NOR Flash.
---
4️⃣ `sboot_sun8iw20p1.bin` 🚀
مرحله دوم بوتلودر (Secondary Boot). بعد از Boot0 اجرا میشه و وظیفه لود کرنل رو داره.
---
5️⃣ `fes1_sun8iw20p1.bin` 🛠
یه بوتلودر مخصوص FEL Mode برای آپدیت و ریکاوری از طریق USB.
---
6️⃣ `t113-mq_r-uImage` 🐧
کرنل لینوکس به فرمت uImage مخصوص U-Boot.
---
7️⃣ `t113-mq_r-zImage` 🐧
کرنل لینوکس ولی به فرمت zImage (خامتر، بدون Header مخصوص U-Boot).
---
8️⃣ `rootfs.img` 📦
سیستمفایل روت (Root Filesystem). همهٔ ابزارها، برنامهها و کتابخونهها اینجاست.
---
9️⃣ `boot.img` ⚙️
پارتیشن بوت که شامل کرنل + تنظیمات بوت هست.
---
🔟 `tina_t113-mq_r_uart0.img` 💾
ایمیج کامل بوت + کرنل + rootfs مخصوص بوت از SD یا FEL Mode. معمولاً برای فلش سریع کل سیستم استفاده میشه.
---
📑 فایلهای لیست و چکسام:
*
---
💡 نکته حرفهای:
* اگه فقط برنامه و فایلهای root تغییر کرده باشه، میتونی فقط rootfs.img رو جایگزین کنی.
* اگه کرنل رو تغییر دادی، باید uImage/zImage + boot.img رو هم آپدیت کنی.
* اگه بوتلودر رو تغییر دادی (Boot0 یا Sboot) باید از روشهای خاص آپدیت کنی.
---
🔥 جمعبندی:
این فایلها هر کدوم مخصوص یه بخش از سیستم هستن. لازم نیست همیشه همه رو فلش بزنی — بسته به تغییراتت، فقط همون بخش رو جایگزین کن تا سرعت کارت بیشتر بشه ⏳💪
📌 مخصوص کسایی که با Tina Linux کار میکنن و میخوان بدونن هر فایل به چه درد میخوره!
---
📂 وقتی پروژه رو کامپایل میکنی، تو پوشه out/ کلی فایل تولید میشه. اینا مهمترینهاش هستن:
---
1️⃣ `boot0_sdcard_sun8iw20p1.bin` 🥾💽
بوتلودر اولیه برای بوت از SD Card. بدون این، CPU اصلاً نمیفهمه باید چی لود کنه.
---
2️⃣ `boot0_nand_sun8iw20p1.bin` 🥾📦
بوتلودر اولیه برای بوت از NAND Flash. فقط وقتی از حافظه داخلی NAND استفاده میکنی کاربرد داره.
---
3️⃣ `boot0_spinor_sun8iw20p1.bin` 🥾📜
همون بوتلودر ولی برای SPI NOR Flash.
---
4️⃣ `sboot_sun8iw20p1.bin` 🚀
مرحله دوم بوتلودر (Secondary Boot). بعد از Boot0 اجرا میشه و وظیفه لود کرنل رو داره.
---
5️⃣ `fes1_sun8iw20p1.bin` 🛠
یه بوتلودر مخصوص FEL Mode برای آپدیت و ریکاوری از طریق USB.
---
6️⃣ `t113-mq_r-uImage` 🐧
کرنل لینوکس به فرمت uImage مخصوص U-Boot.
---
7️⃣ `t113-mq_r-zImage` 🐧
کرنل لینوکس ولی به فرمت zImage (خامتر، بدون Header مخصوص U-Boot).
---
8️⃣ `rootfs.img` 📦
سیستمفایل روت (Root Filesystem). همهٔ ابزارها، برنامهها و کتابخونهها اینجاست.
---
9️⃣ `boot.img` ⚙️
پارتیشن بوت که شامل کرنل + تنظیمات بوت هست.
---
🔟 `tina_t113-mq_r_uart0.img` 💾
ایمیج کامل بوت + کرنل + rootfs مخصوص بوت از SD یا FEL Mode. معمولاً برای فلش سریع کل سیستم استفاده میشه.
---
📑 فایلهای لیست و چکسام:
*
md5sums
و sha256sums
✅ برای بررسی صحت فایلها.---
💡 نکته حرفهای:
* اگه فقط برنامه و فایلهای root تغییر کرده باشه، میتونی فقط rootfs.img رو جایگزین کنی.
* اگه کرنل رو تغییر دادی، باید uImage/zImage + boot.img رو هم آپدیت کنی.
* اگه بوتلودر رو تغییر دادی (Boot0 یا Sboot) باید از روشهای خاص آپدیت کنی.
---
🔥 جمعبندی:
این فایلها هر کدوم مخصوص یه بخش از سیستم هستن. لازم نیست همیشه همه رو فلش بزنی — بسته به تغییراتت، فقط همون بخش رو جایگزین کن تا سرعت کارت بیشتر بشه ⏳💪