5.5.20 · D1 · HinglishEmbedded Systems & Real-Time Software

FoundationsSoftware testing in embedded — unit tests on host, HIL testing

2,355 words11 min read↑ Read in English

5.5.20 · D1 · Coding › Embedded Systems & Real-Time Software › Software testing in embedded — unit tests on host, HIL testi

Parent note padhne se pehle, tumhe uske har word aur symbol ki ownership leni hogi. Hum unhe ek-ek karke banate hain — har ek apni jagah earn karta hai, phir agli aati hai.


1. Do machines: host vs target

Parent note baar baar "host" aur "target" kehta hai. Ye sirf do alag computers hain.

Neeche diye do boxes dekho. Same program, lekin do bilkul alag ghar.

Yeh topic ko kyun chahiye: parent ka har sentence is baare mein hai ki in dono machines mein se kaun sa ek given test run karta hai. "Test on host" matlab left box; "HIL" matlab right box jo real sensors se connected ho.


2. Microcontroller (MCU), aur "32KB RAM" numbers

Parent likhta hai "32KB RAM". Har piece earn karte hain:


3. Peripherals: woh parts jo duniya ko touch karte hain

Parent GPIO, ADC, PWM, UART, CAN, timer, interrupt, ISR use karta hai. Ye sab peripherals hain — MCU ke andar ya uske paas chhote helper circuits jo use physical world se connect karte hain. Inhe ek-ek karke lete hain.

Yeh topic ko kyun chahiye: ye peripherals exactly woh parts hain jo tumhare laptop par exist nahi karte. Yahi woh poori problem hai jo yeh topic solve karta hai — aur agli idea ka reason bhi yahi hai.


4. Register: hardware se directly baat karna

Parent ka "BAD" code ADC1->DR aur TIM2->CCR1 likhta hai. Ye registers hain.

  • ADC1->DR = ADC ka Data Register padhna → latest converted number lena.
  • TIM2->CCR1 = timer 2 ka Compare register likhna → PWM level set karna.

5. Abstraction, HAL, mock, stub

Ye chaar words "unit tests on host" ka beating heart hain.

Ab trick: kyunki har koi door knock karta hai, machinery ko nahi, hum same door ke peeche alag machinery rakh sakte hain depending on kahan run ho raha hai.

Yeh topic ko kyun chahiye: poora "test on host" tier sirf isliye kaam karta hai kyunki har HAL door ke peeche hum real register-poker ki jagah ek mock swap kar sakte hain jo hum apne test se control karte hain.


6. Example algorithms ke andar symbols

Parent ke worked examples do real control algorithms use karte hain. Tumhe inhe master nahi karna, lekin tumhe inke symbols pehchanne chahiye.

6a. PID controller ke symbols

Ek PID controller ek measured value ko target ki taraf steer karta hai. Uski update line ye symbols use karti hai:

Yeh topic ko kyun chahiye: parent ka PID test fabs(pid.integral) < 0.01 check karta hai. fabs sirf absolute value hai (zero se doori, sign hata ke). Test kehta hai: perfect tracking ke baad, past-error ki memory drift nahi karni chahiye — ek pure-math property jo host par prove ho sakti hai.

6b. PWM / throttle numbers

HIL example ek throttle voltage ko PWM percentage mein map karta hai. Do conversions aate hain:

Yeh topic ko kyun chahiye: parent assert karta hai ki pwm_duty ke ke andar hona chahiye, aur ADC PWM ko par cap kare. Ye exactly woh numbers hain jo hum neeche verify karte hain.


7. Timing symbols: , , μs, ms

Yeh topic ko kyun chahiye: host tests time mock karte hain — yeh pretend karte hain ki time beetta hai — isliye yeh physically real microseconds measure nahi kar sakte. Yahi gap exactly woh reason hai kyun HIL exist karta hai.


8. HIL vocabulary

Related tools jo baad mein milenge: Real-Time Operating Systems (RTOS) (un tasks ko schedule karta hai jinki timing HIL check karta hai), Fault Injection Testing (deliberately inputs todna), aur Continuous Integration for Embedded (yeh sab automatically run karna).


Prerequisite map

Host vs Target machines

MCU with tiny RAM

Peripherals GPIO ADC PWM UART

Registers touch hardware

HAL doors over registers

Mocks and Stubs swap machinery

Unit tests on Host

Interrupts and ISR timing

Real-time deadlines in us and ms

HIL testing on real board

Two-tier testing strategy


Equipment checklist

Parent note padhne se pehle har ek cheez zor se answer karo.

Host aur target mein kya fark hai?
Host = woh roomy computer jis par tum develop karte ho; target = woh tiny MCU jis par tumhara firmware finally run karta hai.
32KB mein kitne bytes hote hain?
bytes.
ADC kya karta hai?
Ek real smooth voltage ko ek whole number mein badalta hai jis par MCU compute kar sake.
DAC kya karta hai?
Ulta — ek number ko ek wire par real voltage mein badalta hai.
PWM ek line mein kya hai?
Ek pin ko fast on/off karna taaki average ek in-between power level ki tarah kaam kare.
Koi function jo ADC1->DR padhta hai woh tumhare laptop par kyun run nahi kar sakta?
Host par aisa koi register nahi hai; woh address kuch bhi point nahi karta.
HAL kya hai?
hal_... "doors" ka ek tidy set taaki code kabhi directly registers touch na kare, jisse hum implementations swap kar sakein.
Mock vs stub?
Stub ek fixed hardcoded value return karta hai; mock programmable hota hai aur record karta hai kaise call kiya gaya.
fabs kya hai?
Absolute value — zero se doori, sign hata ke.
Kya real-time ka matlab fast hota hai?
Nahi — matlab deadline se pehle, time par, har baar.
Ek millisecond mein kitne microseconds hote hain?
.
3.3V supply ka 50% kitna voltage hai?
.
Full scale par 12-bit ADC kaunsa number deta hai?
(yeh hai).
HIL rig mein DUT kya hai?
Device Under Test — woh real board jo tumhara firmware run kar rahi hai.