[U-Boot-Users] How to optimize bit bang interface?

Steven Scholz steven.scholz at imc-berlin.de
Tue Oct 21 15:54:49 CEST 2003


Hi there,

I am trying to configure an Altera FPGA using the so called "passive serial 
interface". Basicly it follows the scheme "clk low, data out, clock high".

For testing I wrote the loop

                 ts = get_timer (0);
                 while (1) {
                         if (get_timer (ts) > 10 * CFG_HZ)
                                 break;
                         /* Deassert the clock */
                         (*fn->clk) (FALSE, TRUE, cookie);
                         /* Assert the clock */
                         (*fn->clk) (TRUE, TRUE, cookie);
                 };

fn->clk() is the function that the common FPGA code uses:

int inline fpga_clk_fn(int assert_clk, int flush, int cookie)
{
         if (assert_clk)
                 *AT91C_PIOB_SODR = FPGA_DCLK;
         else
                 *AT91C_PIOB_CODR = FPGA_DCLK;
         return assert_clk;
}

I noticed that this is awfully slow. I get arounf 50kHz using an AT91RM9200 
running at 51MHz (core @ 171MHz).

Could someone give me a hint how to optimize stuff like this for speed?

Thanks a million,

-- 
Steven Scholz

imc Measurement & Control               imc Meßsysteme GmbH
Voltastr. 5                             Voltastr. 5
13355 Berlin                            13355 Berlin
Germany                                 Deutschland
fon: +49 30 467090-0                    Tel: 030 / 467090-0
fax: +49 30 4631576                     fax: 030 / 4631576






More information about the U-Boot mailing list