TDDI11 Embedded software
All Messages
240426 | Available timeslots to fetch boardsfrom Ahmed's office |
All members of each lab group (both members if a pair, otherwise one student if you are working alone) should come by Ahmed's office, during one of the booked timeslots, to fetch a development board for chapter 5. The currenlty available timeslots are:
|
|
240421 | Cancelled lecture on Monday 2024-04-22 |
Tomorrow's lecture will hve to be cancelled because of sickness. We meet on Friday for the lecture on finite state machines. |
|
250415 | IN/OUT instructions in chapter 3 (polling and interrupts) |
The IN/OUT instructions cannot take a port number that does not fit in 8-bits.
The port number used in the lab is 0x3F8 and does not fit in 8 bits. You need to go through
dx as explained in the compendium. Also, you need to read/write one byte a time and therefore need to use "al" as
the destination/source. Using "ax" or "eax" would result in different opcodes,
hence reading/writing more than one byte. See "Input from Port" in page 3-520 of |
|
250415 | Passing arguments in chapter 3 (polling and interrupts) |
Do note that "void SerialPut(char ch)" takes one argument while "void SerialISR(void)" does not (see serial.h). You can find the argument to SerialPut as you did in chap2 for llmultiply. In addition, "BOOL QueueInsert(QUEUE* q, void *data)" (see libepc.h under /courses/TDDI11/sw/include) takes two pointers as arguments. One of them can be the value of the "data" label. The label "data" can be treated as the address of the byte defined at line 3 in "serial.asm". The other argument should be a pointer to the queue defined in "main.c". The "inbound_queue" label defined as external in "serial.asm" should be treated as the address of the "inbound_queue" variable defined in "main.c" (which happens to be a pointer to a QUEUE created in line 18 of "main.c"). In other words: data is the address of the byte where you should store the byte you get in the ISR and [inbound_queue] is the address of the queue from main.c (i.e. inbound_queue in serial.asm is the address of the inbound_queue pointer in main.c which contains the address of the QUEUE). You want to pass data and [inbound_queue] as a parameter to QueueInsert. |
|
250415 | About chapter 2 (mixing c and assember) |
Check the documentation of libepc.h here to find how to count the number cycles, or the time in milliseconds, when you compare the C (optimized/non-optimized) and assembly versions of your llmultiply method. |
|
240312 | The course web pages are being updated for 2024. |
Page responsible: Ahmed Rezine
Last updated: 2017-04-03