一種基于ARM-Linux的FPGA程序加載方法
int fpga_open(struct inode *inode, struct file *filp){
int minor;
minor = MINOR(inode->i_rdev);
init_fpga();
fpga_devices[minor]++;
printk("FPGA is ready.");
return 0;
}
ssize_t fpga_write(struct file *flip,const char *buffer,size_t count,loff_t
*ppos){
int i;
if(copy_from_user(buf,buffer,count)){
printk("error ");
return -EFAULT;
}
printk("%d numbers have been received!",count);
printk("The number is:%d",count);
for(i=0;icount;i++){
ARM_GPDDAT=(ARM_GPDDAT0x3F00)|buf[i];
set_register_bit(FPGA_CCLK);
}
printk("data write finished");
for(i=0;i4;i++){
set_register_bit(FPGA_CCLK);
clear_register_bit(FPGA_CCLK);
}
return count;
}
int fpga_release(struct inode *inode, struct file *filp){
int minor;
minor = MINOR(inode->i_rdev);
if (fpga_devices[minor])
fpga_devices[minor]--;
printk("Goodbye cruel world");
return 0;
}
void cleanup_module(void){
printk("Goodbye cruel world");
}
5、結束語
本文的創(chuàng)新點:基于ARM-Linux平臺,實現(xiàn)了一種FPGA的程序加載模式,加載速度快,靈活高效。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論