embedded | Unsorted

Telegram-канал embedded - Embedded Academy

1990

📢 All About Embedded in Persian and English ✅ Embedded Systems ✅ IoT ✅ AI ✅ Machie Vision در سایر شبکه ها: aparat.com/embedded instagram.com/embedded_ir Twitter.com/embedded_ir Admin: @embeded

Subscribe to a channel

Embedded Academy

One line down, more efficient: Tail Recursion

📌 B4b4k

Recursive functions are known for programmers, but it uses the call stack and has stack overflow risk. but simple change results in a big difference. this change is called "tail recursive". The tail recursion is that kind of recursion in which the recursive call is made at the end of the function.
Consider this formal recursion:

unsigned int fact(unsigned int n)
{
if (n <= 0)
return 1;
return n * fact(n - 1);
}

Can Change to the Tail-recursion version as follows:
unsigned int factTail(unsigned int n, unsigned int a)
{
if (n == 1)
return a;
return factTail(n - 1, n * a);
}
unsigned int fact(unsigned int n) { return factTail(n, 1); }

Note in this version there is no statement after the recursive call.
While computers execute recursive with the help of stacks By using tail recursive instead of formal or head recursive, compilers (such as GCC) can transform this to loop and eliminates stack overflow risk and decrease space complexity from O(n) to O(1).

#Tips #Algorithms #Cpp
@embedded

Читать полностью…

Embedded Academy

Code Review
Typical Code Review Procedure

Before inspections there are 4.5 errors per 100 lines of code. After an inspection, expect 0.82 errors per 100 lines of code. Freedman, Weinberg(1990).



#CodeReview
#testing
#QualityAssurance
@embedded

Читать полностью…

Embedded Academy

📚 grokking algorithms
📖 An illustrated guide for
programmers and other curious people

✏️Aditya Y. Bhargava

#Book
@embedded

Читать полностью…

Embedded Academy

بردیم
مبارک همگی
Iran🇮🇷
IRAN 2- Japan 1

Читать полностью…

Embedded Academy

📰 #آگهی_استخدام
📍 #تهران
#تمام_وقت #پاره_وقت

شرکت پتونیا جهت تکمیل کادر تخصصی خود نیازمند تعدادی کارشناس سینیور و جونیور در زمینه توسعه میان افزار دارد.

همکاری هم نیمه وقت و تمام وقت
حقوق توافقی بسته به سطح و تجربه متخصصین بدون سقف
بیمه تکمیلی
وام
پاداش عملکرد

دریافت سهام تشویقی پرسنل

1) مسلط به سیستم عامل و برنامه نویسی تحت Embedded-Linux
2) تجربه سفارشی‌ سازی کرنل لینوکس
3) تسلط بر مفاهیم IOT (Lora WAN ، ZigBee ، RFID ، Bluetooth و...)
4) تسلط به برنامه نویسی به زبان C/C++
5) تسلط به مفاهیم FREERTOS
6) تسلط به لایه های برنامه نویسی استاندارد
7) تسلط به برنامه نویسی Bare-Metal برای پردازنده های ARM
8) مستند سازی وظایف محول شده در قالب تیمی یا فردی
9) خلاقیت و نوآوری در شیوه های حل مسئله
10) دارای انگیزه ی مشارکت فعال در
حوزه ی R&D و ارتقای سطح دانش فردی

لطفا رزومه خود را به آدرس:
Job@petunia.ir

📌 فرصت‌های شغلی مرتبط با مهندسی نهفته 👇
@embedded

Читать полностью…

Embedded Academy

Automated optical inspection (AOI) is a quality-control process used by manufacturers to detect and identify defects in products. It plays a crucial role in enhancing the efficiency and accuracy of quality control, reducing the likelihood of defects reaching the end consumer.

In this picture shown parts of an AOI System
#MachineVision
@embedded

Читать полностью…

Embedded Academy

C++ Milestones

#Cpp26

@embedded

Читать полностью…

Embedded Academy

🤔 خیلیا میپرسن بهترین آموزشگاه که تضمینی آموزش میده کجاس ؟

🔘ما نیرا سیستم رو به شما معرفی می کنیم :
@nirasystem

‼️ بهترین دوره ها و کارگاه های آموزشی برق الکترونیک

🔸 آموزش مهارت های مورد نیاز بازارکار
🔹 آموزش کاملا عملی و پروژه محور
🔸کارآموزی در واحدهای فنی نیرا
🔹معرفی به واحدهای صنعتی برای استخدام



🎯 آینده را اکنون بساز|نیراسیستم

عضویت 👇👇👇

@nirasystem

مشاهده دوره های آموزشی:
www.nirasystem.com

Читать полностью…

Embedded Academy

«Minimum Viable Architecture»

A presentation by Randy Soup, Chief Architect at Ebay, introducing this idea based on his experiences and evolutions of famous technology giants such as Amazon, Google and so on.

Watch This Presentation at YouTube

#SoftwareArchitect
#Microservices
#AgileDevelopment
@embedded

Читать полностью…

Embedded Academy

برای استفاده از یادگیری عمیق برای پردازش صوت و گفتار یکی از تکنیک‌های مورد کاربرد تبدیل داده تک بعدی صوتی به داده‌های دوبعدی است. این عملیات اصطلاحا بصری‌سازی (Visualization) نام دارد. [این کار با تبدیل‌های فرکانسی صورت می‌پذیرد.]

این مقاله کوتاه، برخی از مهم‌ترین تکنیک‌های مرتبط را توضیح می‌دهد.


#CNN
#Speech_Processing
#Librosa
@embedded

Читать полностью…

Embedded Academy

✅ Nvidia has doubled large language model (LLM) inference performance on its H100, A100 and L4 GPUs with a new open-source software library called TensorRT-LLM.

👈 افزایش کارایی در اینفرنس مدل‌های بزرگ (LLM) تا دو برابر با توسعه کتابخانه نرم‌افزاری متن باز توسط #Nvidia به نام TensorRT-LLM

Read More/بیشتر بخوانید

#AI #LLM
#EmbeddedAI
@embedded

Читать полностью…

Embedded Academy

The S.O.L.I.D Principles in pictures
by Ugonna Thelma

Well-written code using SOLID will help you extend your code in a sustainable, manageable and efficient way. These pictures describe that visually and simple

📚 Software Development Philosophies
#OOP
#Software
@embedded

Читать полностью…

Embedded Academy

Classification of AI technology and its allied functions showing applications in manufacturing sector

#AI
@embedded

Читать полностью…

Embedded Academy

✅ پرش (bounce) در کلید زنی (switching)

👈 در کار با کلیدهای مکانیکی در مدارات الکترونیک دیجیتال یکی از مشکلات پرش هنگام کلید زنی است که در نحوه کار مدار مشکلاتی به وجود می آورد

🔸 چرا که هیچ گاه به صورت کامل و تمیز اتصال بین تیغه ها برقرار نمی شود و همراه با لرزش های ناخواسته است.

👈 برای حل این مشکل روش های نرم افزاری و سخت افزاری مختلفی پیشنهاد شده است و حتی برای این موضوع IC سفارشی نیز طراحی شده است.

📌 اما یکی از راه های پیشنهادی و ساده سخت افزاری استفاده از فلیپ فلاپ RS می باشد که در بالا مشاهده میکنید.
کافیست پایه ها را به صورت پیشفرض به سطح ولتاژ بالا متصل کنید و کلید را به پایه set متصل کنید تا با فشردن کلید سطح ولتاژ set به صفر تغییر یابد و با این کار در صورت لرزش کلید و تغییر سطح set به یک کماکان در حالت حافظه مقدار قبلی خود را حفظ میکند و... .


🔺 روش های پیشرفته تر برای debouncing را از اینجا مطالعه کنید.

#Debouncing
#FlipFlop
#الکترونیک_پایه
@embedded

Читать полностью…

Embedded Academy

واقعا هیچ وقت یادگیری برنامه‌نویسی امبدد به این سادگی نبوده که شما یه سایتو باز کنی همونجا ماژول‌ها رو به هم وصل کنی، همون‌جا کدشو بنویسی و تست کنی!

پیشنهاد می‌کنم اگه تازه وارد حوزه امبدد میشید و نمی‌خواید یا نمی‌تونید زیاد هزینه کنید حتما قدر wokwi.com‎ رو بدونید.

Viva OpenDrain

@embedded

Читать полностью…

Embedded Academy

دومین دورهمی گروه کاربران لینوکس تعبیه شده (E-LUG)

🔴موضوع نشست : آشنایی و دانش افزایی در حوزه امبدد لینوکس

🗓️تاریخ : سه شنبه 28 فروردین ماه 1403

🕖 ساعت : 19:00 الی 20:30

📍مکان : تهران، میدان آزادی، اتوبان لشگری، بعد از ایستگاه مترو بیمه، کارخانه نوآوری آزادی، سوله هفت‌و‌هشت

حضور برای عموم رایگان می‌باشد.
❕ظرفیت محدود
ثبت نام رایگان و اطلاعات بیشتر:
https://evnd.co/3mGnO

کانال آپارات: 
https://www.aparat.com/E_LUG_IRAN 

وب سایت گیت‌هاب : 
https://github.com/elugiran 

لینکدین: 
www.linkedin.com/in/elugiran 

گروه تلگرام: 
/channel/+zPRUDuFxMsNjZmY0 

ایمیل E-LUG: 
elugiran@gmail.com

Читать полностью…

Embedded Academy

ثبت نام وبینار شرکت اینتل برای معرفی بخش FPGA آن که قرار است از اینتل جدا شود و یک شرکت مستقل به نام PSG Altera تشکیل شود. شرکت آلترا سازنده ی تراشه و نرم افزارهای FPGA چند سال قبل به اینتل پیوسته بود :

Intel has announced its intent to operate its Programmable Solutions Group (PSG) as a standalone business.

Learn about PSG’s transformation into an independent FPGA company and how it will accelerate industry innovation. We’ll unveil new enablement tools and show demos developed to address performance, power, and flexibility challenges for next-generation designs across many markets. We’ll also showcase how Intel Agilex® FPGAs solve AI challenges.

لینک ثبت نام
@Taksuntec

Читать полностью…

Embedded Academy

📚 grokking algorithms
📖 An illustrated guide for
programmers and other curious people

✏️Aditya Y. Bhargava

This book uses Visualization technique to teach algorithms in an easy way for understanding and keeping in mind for programmers.

آگاهی از الگوریتم خصوصا در برنامه‌نویسی سیستم‌های نهفته و آشنایی با شیوه محاسبه پیچیدگی ضروری‌است. الگوریتم و مباحثی نظیر محاسبه هزینه و پیچیدگی از جمله مباحثی است که بسیاری از متخصصان و فعالین این حوزه که عمدتا از رشته‌های برق و الکترونیک هستند در دانشگاه درس مرتبط نگذارنده‌اند.

#Algorithms
@embedded

Читать полностью…

Embedded Academy

یکم سم از سی‌شارپ ببینید

Читать полностью…

Embedded Academy

MLOps Basic Flow

#MLOps
@embedded

Читать полностью…

Embedded Academy

Introducing Pika 1.0, the idea-to-video platform that brings your creativity to life.

Create and edit your videos with AI.


پلتفرم هوش مصنوعی تبدیل ایده به انیمیشن/ویدیو Pika1.0

پیش از این که توان فنی یا مالی برای تبدیل داستانهای ایرانی نظیر شاهنامه به انیمیشن نبود، امیدواریم با این ابزارها بشود روزی تمام شاهنامه را انیمیشن جذاب تبدیل کرد.

یه جایی تو تیزر، ویدیوی سیاه/سفید مرد اسب سوار رو نشون میده که بد نیست بدونید اون ویدیوی سمبلیک، اولین ویدیوی ضبط شده است.
pika.art/waitlist

#AI

@embedded

Читать полностью…

Embedded Academy

Where Complexity Fails Us

✍ Jack Ganssle

Engineering is about numbers. Do you specify a ±5% resistor or ±1%? Do the math! Will all of the signals arrive at the latch at the proper time? A proper analysis will reveal the truth. How hot will that part get? Crunch the numbers and pick the proper heat sink.

Alas, software engineering has been somewhat resistant to such analysis. Software development fads seem more prominent than any sort of careful analysis. Certainly, in the popular press "coding"1 is depicted as an arcane art practiced by gurus using ideas unfathomable to "normal" people. Measure stuff? Do engineering analysis? No, that will crowd our style, eliminate creativity, and demystify our work.

I do think, though, that in too many cases we've abdicated our responsibility as engineers to use numbers where we can. There are things we can and must measure.

One example is complexity, most commonly expressed via the McCabe Cyclomatic Complexity metric. A fancy term, it merely means the number of paths through a function. One that consists of nothing more than 20 assignment statements can be traversed exactly one way, so has a complexity of one. Add a simple if and there are now two directions the code can flow, so the complexity is two.

There are many reasons to measure complexity, not the least is to get a numerical view of the function's risk (spoiler: under 10 is considered low risk. Over 50: untestable.)

To me, a more important fallout is that complexity tells us, in a provably-correct manner, the minimum number of tests we must perform on a function to guarantee that it works. Run five tests against a function with a complexity of ten, and, for sure, the code is not completely tested. You haven't done your job.

What a stunning result! Instead of testing to exhaustion or boredom we can quantify our tests.

Alas, though, it only gives us the minimum number of required tests. The max could be a much bigger number.

Consider:

if ((a && b) (c && d) (e && f))...
Given that there's only two paths (the if is taken or not taken) this statement has a complexity of 2. But it is composed of a lot of elements, each of which will affect the outcome. A proper test suite needs a lot more than two tests. Here, complexity has let us down; the metric tells us nothing about how many tests to run.

Thus, we need additional strategies. One of the most effective is modified condition/decision coverage (MC/DC). Another fancy term, it means making sure every possible element in a statement is tested to ensure it has an affect on the outcome.

Today some tools offer code coverage: they monitor the execution of your program and tag every statement that has been executed, so you can evaluate your testing. The best offer MC/DC coverage testing. It's required by the most stringent of the avionics standards (DO-178C Level A), which is partly why airplanes, which are basically flying computers, aren't raining out of the sky.

Use complexity metrics to quantify your code's quality and testing, but recognize its limitations. Augment it with coverage tools.


Footnotes:

1 I despise the word "coding." Historically coding was the most dreary of all activities: the replacement of plain text by encrypted cipher. Low-level functionaries, or even machines, did the work. Maybe "coding" is an appropriate term for script kiddies or HTML taggers. If we are coders you can be certain that in very short order some AI will replace us. No, we in the firmware world practice2 software engineering: implementing complex ideas in software using the precepts of careful engineering. These include analysis, design, negotiating with customers, implementation and measurements of our implementations.

2 Bob Dylan got it right: "he not busy being born is busy dying". We should be forever practicing software engineering. Practice: "perform (an activity) or exercise (a skill) repeatedly or regularly in order to improve or maintain one's proficiency." Unless we're constantly striving to improve we'll be dinosaurs awaiting the comet of our destruction.

@embedded

Читать полностью…

Embedded Academy

Gall's Law

A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.
قانون گال:
یک سیستم پیچیده که کار می‌کند، تکامل یافته سیستم ساده است که کار می‌کرده. سیستم پیچیده‌ای که از ابتدا طراحی شود، هیچگاه کار نمی‌کند و نمی‌توان عیب‌یابی کرد. شما مجبورید با سیستم ساده کارا شروع کنید.

from Gall's book Systemantics: How Systems Really Work and How They Fail

#SystemDesign
@embedded

Читать полностью…

Embedded Academy

📰 #آگهی_استخدام/امریه
📍 #تهران
#تمام_وقت

یک شرکت دانش بنیان جهت تکمیل تیم توسعه سیستم نهفته خود، به یک توسعه دهنده حرفه ای با شرایط زیر نیازمند است:

🔸فارغ التحصیل رشته الکترونیک
🔸تجربه کد نویسی با STM32 و ESP32
🔸آشنا با کدنویس cpp
🔸توانایی کدنویسی ماژولار
🔸تسلط و درک از معماری پردازنده های STM32
🔸تجربه کدنویسی برای ماژول های مختلف میکروکنترلرهاEthernet port , USB port ,SPI,UART, CAN, ...
🔸مسلط به کامپایلر Keil
🔸مسلط به Free RTOS
🔸مسلط به محیط STM32CubeMX
🔸توانایی دیباگ سخت افزار
🔸توانایی مستندسازی و گزارش نویسی

معرفی شرکت:
شرکت دانش بنیان مستقر در دانشگاه شريف.

امكان جذب به صورت امریه سربازی برای آقایان وجود دارد.

ارسال رزومه به:
hrm@konect.ir

📌 فرصت‌های شغلی مرتبط با مهندسی نهفته 👇
@embedded

Читать полностью…

Embedded Academy

🔺Comparision of C++ and Posix Threads

What is the difference between using the C++ std threads and POSIX threads?

API: The API for C++ std threads and POSIX threads are different, with different function names and parameters. The C++ std thread library is part of the C++ standard library and provides a C++ interface, while the POSIX threads library is a separate library that provides a C interface.

Implementation: The implementation of C++ std threads and POSIX threads may differ depending on the specific platform and implementation details. C++ std threads are typically implemented using a combination of user-level and kernel-level threads, while POSIX threads are typically implemented using kernel-level threads.

Portability: C++ std threads are part of the C++ standard library, which makes them more portable than POSIX threads, which are a separate library and may not be available on all platforms.

Exception handling: C++ std threads support exception handling, while POSIX threads do not. This means that in C++ std threads, exceptions can be propagated across thread boundaries, while in POSIX threads, exceptions must be caught and handled within the same thread.

Synchronization primitives: C++ std threads provide a set of synchronization primitives, such as mutexes, condition variables, and atomic operations, that are designed to work with the C++ language and its memory model. POSIX threads provide similar synchronization primitives, but they are designed to work with the C language and may require more low-level manipulation of shared memory.


#Cpp
#Multithreading
#POSIX

@embedded

Читать полностью…

Embedded Academy

✅ GNSS vs GPS

📌 جایگزینی سیستم‌های مبتنی بر GPS با GNSS توسط کمپانی‌های بزرگ در حال انجام است. شرکت Nikon تولید کننده مطرح دوربین‌های عکاسی هم در مدل‌های جدید خود از GNSS بجای GPS استفاده کرده است.

👈 اما GNSS چیست؟
🛰️ سامانه ماهواره‌ای ناوبری جهانی (Global Navigation Satellite System)، امواجی که طرف ماهواره های موجود در مدار دریافت می کند و با کمکی که از گیرنده های زمینی می گیرد می تواند محل دقیق یک نقطه را در فضای سه بعدی مشخص کند. این سیستم از سیستم‌های زیر تشکیل شده است:

GPS که متعلق به ایالت متحده آمریکا است.
GALILEO مربوط به اتحادیه اروپا
Compass متعلق به کشور چین
Beidou مربوط به کشور چین
GLONASS برای کشور روسیه می باشد.

🔺در کنار دقت در موقعیت‌یابی، استقلال طلبی فناوری و دلایل سیاسی و امنیتی، باعث اقبال شرکتهای بزرگ از این سامانه و جایگزینی آن شده است.
#GNSS
#GPS

@embedded

Читать полностью…

Embedded Academy

Support us so we can post stories

/channel/embedded?boost

Читать полностью…

Embedded Academy

1984 CASIO watch that has a touch screen with gesture control calculator!


📌 ماشین حساب لمسی در «کاسیو ۱۹۸۴»

البته بیش از آنکه تکنولوژی به کار رفته برای تشخیص لمس و حرکات دست شگفت‌انگیز باشد، آن‌هم با تکنولوژی‌های موجود آن زمان (۱۹۸۴)، جسارت تغییر و نوآوری و تعهد به کیفیت بوده است. چیزی که برای پیشرفت صنعت بومی یک کشور نیاز است.

هشتگ #نوستالژی را دنبال کنید.

@embedded

Читать полностью…

Embedded Academy

DensePose From WiFi

A deep neural network that maps the phase and amplitude of WiFi signals to UV coordinates within 24 human regions

Paper Link

#DeepLeaning
#WiFi
#DenseImaging
@embedded

Читать полностью…

Embedded Academy

کد Refactor با #هوش_مصنوعی


Adrenaline
یک دیباگر مبتنی بر OpenAI Codex است. این می تواند کد را درمان کند و در چند ثانیه جزئیات خطاها را به شما بگوید. اینجاست که می توان از این ابزار استفاده کرد.

فقط کد شکسته و پیام خطا (مانند ردیابی پشته یا توضیح زبان طبیعی خطا) را اضافه کنید و Debug را بزنید. این ابزار تغییرات کد را که ممکن است خطای شما را برطرف کند (یا حداقل یک نقطه شروع به شما بدهد) برمی گرداند
https://useadrenaline.com/

@embedded

Читать полностью…
Subscribe to a channel