29.01.2015 Views

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Software</strong> Streaming Via Block Streaming 441<br />

after running the software streaming co<strong>de</strong> generation program on the<br />

application co<strong>de</strong>. Branch instructions be 4,1,.L3 and b .L4, as seen in Figure<br />

32-3, are modified to bc 4,1,load2_1 and b load2_2, respectively, as seen in<br />

Figure 32-4.<br />

Since the last instruction of Block 2 is not a branch or a return instruction,<br />

the instruction bl load3_0 will be appen<strong>de</strong>d to Block 2 from Figure<br />

32-3 to load the subsequent block. The instruction bl load3_0 can be replaced<br />

later by the first instruction of the block after Block 2 in or<strong>de</strong>r to preserve<br />

co<strong>de</strong> continuity.<br />

3.1.2. Coping with non-interruptible sections<br />

Some real-time applications may contain non-interruptible section(s). This<br />

means that while the processor is executing a non-interruptible section, the<br />

processor cannot accept interrupts. Usually, a non-interruptible section<br />

contains instruction(s) to disable interrupts and one or more instructions to<br />

enable interrupts. A real-time co<strong>de</strong> section should not be suspen<strong>de</strong>d due to<br />

missing software components since downloading software from the network<br />

can be very long and unpredictable. There<strong>for</strong>e, a non-interruptible real-time<br />

section must be put in a single block.<br />

3.1.3. En<strong>for</strong>cing block boundaries<br />

One drawback <strong>for</strong> randomly dividing a binary image into blocks is that some<br />

of the co<strong>de</strong> in a particular block may not be used. For instance, consi<strong>de</strong>r the<br />

case where the first instruction of a block is the last instruction of the function<br />

in the previous block. For this case, perhaps only one instruction of the entire<br />

block (the first instruction) may be nee<strong>de</strong>d if the other function(s) in the block<br />

are never called. As a result, memory and bandwidth are not efficiently used.<br />

However, by obtaining the size of each function, the block boundaries can be<br />

en<strong>for</strong>ced to more closely match with function boundaries [12].

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!