Hi all,
Actually, I'm trying to write/read my flash device using the HAL
functions.
After opening the device, I write data into the EPCS64 using
alt_write_flash_block, then i read it back using alt_read_flash.
The problem i have is that the data read/ written shown in the Nios II
console are not the same.
The code for writing and reading is below:
1 | int Write_flash( alt_flash_fd* fd, float *Ks_para,int test_offset)
|
2 | {
|
3 | int i;
|
4 | int ret_code = 0;
|
5 |
|
6 | alt_u8 *ptr_ks=(alt_u8*) Ks_para;
|
7 |
|
8 | int test_length = sizeof(Ks_para);
|
9 |
|
10 | // before writing in a sector, we should erase it before
|
11 | ret_code=alt_erase_flash_block(fd, test_offset,regions->block_size);
|
12 | if(!ret_code){
|
13 |
|
14 | for(i=0;i<test_length;i++){
|
15 | printf( "data_written[%d]= 0x%08x\n\r",i,ptr_ks[i]);
|
16 | }
|
17 |
|
18 | //ret_code = alt_epcq_controller_write_block(fd, test_offset, test_offset,ptr_ks, test_length);
|
19 | ret_code=alt_write_flash_block(fd,test_offset,test_offset,ptr_ks,test_length);
|
20 | }
|
21 | if (ret_code)
|
22 | {
|
23 | printf( "\nERROR: function alt_write_flash failed. ret_code %d\n",ret_code);
|
24 | return ret_code;
|
25 | }
|
26 | return ret_code;
|
1 | float Read_flash( alt_flash_fd* fd,int test_offset)
|
2 | {
|
3 | int test_length = 4;
|
4 | alt_u8 data_read[test_length];
|
5 | int i=0;
|
6 | union conv2float read_flash;
|
7 | float Ks_para=0.0;
|
8 | int ret_code = 0;
|
9 |
|
10 | if (!ret_code)
|
11 | {
|
12 | //ret_code = alt_epcq_controller_read(fd, test_offset, data_read, test_length);
|
13 | ret_code=alt_read_flash(fd, test_offset, data_read, test_length);
|
14 |
|
15 | if(!ret_code)
|
16 | {
|
17 | for(i=0;i<4;i++){
|
18 | read_flash.V_In[i]=data_read[i];
|
19 | printf( "Flash+%d= 0x%08x\n\r",i,read_flash.V_In[i]);
|
20 |
|
21 | }
|
22 |
|
23 | Ks_para=(float)read_flash.V_Fl;
|
24 |
|
25 | }
|
26 | }
|
27 |
|
28 | alt_flash_close_dev(fd);
|
29 | if (ret_code)
|
30 | {
|
31 | printf( "\nERROR: function READ failed. ret_code %d\n",ret_code);
|
32 | //return ret_code;
|
33 | }
|
34 | return Ks_para;
|
35 | }
|
Can you help please if you have any idea ?
Thank in advance.
Best regards