Beispiel #1
0
        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!!");
        }
Beispiel #2
0
        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);
        }