static void erase_flash() { AB161X_Tools ab_tools = new AB161X_Tools(_sp); if (!ab_tools.connect_chip()) { Console.WriteLine("connect fail"); return; } ab_tools.erase_flash(); Console.WriteLine("Erase OK!!"); }
static void write_flash(string[] args) { byte[] write_buff = new byte[256]; byte[] calcu_buff = new byte[0x1000]; //AB1611_Tools com3 write_flash test.bin if (args.Length != 3) { Console.WriteLine("Paras is too few!!!"); Console.WriteLine("Use: AB161X_Tools.exe comXX write_flash <addr> <file name>"); return; } if (!File.Exists(args[2])) { Console.WriteLine("Error: File {0} do not exist!!!"); return; } AB161X_Tools ab_tools = new AB161X_Tools(_sp); if (!ab_tools.connect_chip()) { Console.WriteLine("connect fail"); return; } long bak_len = 0x1000; Console.Write("Backup Calibration Data ... ... "); for (long i = 0x1000; i < 0x1000 + bak_len; i += 0x100) { ab_tools.read_flash(i, AB161X_Tools.Flash_Length.LEN_256B, write_buff); write_buff.CopyTo(calcu_buff, i - 0x1000); } Console.WriteLine("OK"); Thread.Sleep(100); Console.Write("Erase flash ... ... "); if (ab_tools.erase_flash() != 0) { Console.WriteLine(" Fail!!!"); return; } Thread.Sleep(2000); Console.WriteLine("OK"); FileStream fs = new FileStream(args[2], FileMode.Open); long file_length = fs.Length; for (long i = 0; i < file_length; i += 0x100) { if ((i >= 0x1000) && (i < 0x1000 + bak_len)) { Array.Copy(calcu_buff, i - 0x1000, write_buff, 0, 0x100); ab_tools.write_flash(i, 0, write_buff); fs.Read(write_buff, 0, 0x100); continue; } int read_len = fs.Read(write_buff, 0, 0x100); if (ab_tools.write_flash(i, 0, write_buff) != 0) //写数据出错 { Console.Write("Write flash fail"); break; } if (i % 0x1000 == 0) { Console.Write("\rWrite flash:{0}% ... ", i * 100 / file_length); } } Console.Write("\rWrite:{0} bytes Done", file_length); }