1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-17 21:35:44 +03:00

some initial fixes, still broken :'(

This commit is contained in:
cTn 2013-11-16 19:14:34 +01:00
parent 55de43255c
commit cf601a38f3
2 changed files with 11 additions and 9 deletions

View file

@ -133,8 +133,8 @@ STM32_protocol.prototype.initialize = function() {
// reset and set some variables before we start // reset and set some variables before we start
self.receive_buffer = []; self.receive_buffer = [];
self.flashing_memory_address = self.hex.extended_linear_address; self.flashing_memory_address = self.hex.extended_linear_address[0];
self.verify_memory_address = self.hex.extended_linear_address; self.verify_memory_address = self.hex.extended_linear_address[0];
self.bytes_flashed = 0; self.bytes_flashed = 0;
self.bytes_verified = 0; self.bytes_verified = 0;
@ -412,7 +412,7 @@ STM32_protocol.prototype.upload_procedure = function(step) {
self.send([self.command.write_memory, 0xCE], 1, function(reply) { // 0x31 ^ 0xFF self.send([self.command.write_memory, 0xCE], 1, function(reply) { // 0x31 ^ 0xFF
if (self.verify_response(self.status.ACK, reply)) { if (self.verify_response(self.status.ACK, reply)) {
// address needs to be transmitted as 32 bit integer, we need to bit shift each byte out and then calculate address checksum // address needs to be transmitted as 32 bit integer, we need to bit shift each byte out and then calculate address checksum
var address = [(self.flashing_memory_address >> 24), (self.flashing_memory_address >> 16) & 0xFF, (self.flashing_memory_address >> 8) & 0xFF, (self.flashing_memory_address & 0xFF)]; var address = [(self.flashing_memory_address >> 24), (self.flashing_memory_address >> 16), (self.flashing_memory_address >> 8), self.flashing_memory_address];
var address_checksum = address[0] ^ address[1] ^ address[2] ^ address[3]; var address_checksum = address[0] ^ address[1] ^ address[2] ^ address[3];
self.send([address[0], address[1], address[2], address[3], address_checksum], 1, function(reply) { // write start address + checksum self.send([address[0], address[1], address[2], address[3], address_checksum], 1, function(reply) { // write start address + checksum
@ -466,7 +466,7 @@ STM32_protocol.prototype.upload_procedure = function(step) {
self.send([self.command.read_memory, 0xEE], 1, function(reply) { // 0x11 ^ 0xFF self.send([self.command.read_memory, 0xEE], 1, function(reply) { // 0x11 ^ 0xFF
if (self.verify_response(self.status.ACK, reply)) { if (self.verify_response(self.status.ACK, reply)) {
var address = [(self.verify_memory_address >> 24), (self.verify_memory_address >> 16) & 0x00FF, (self.verify_memory_address >> 8) & 0x00FF, (self.verify_memory_address & 0x00FF)]; var address = [(self.verify_memory_address >> 24), (self.verify_memory_address >> 16), (self.verify_memory_address >> 8), self.verify_memory_address];
var address_checksum = address[0] ^ address[1] ^ address[2] ^ address[3]; var address_checksum = address[0] ^ address[1] ^ address[2] ^ address[3];
self.send([address[0], address[1], address[2], address[3], address_checksum], 1, function(reply) { // read start address + checksum self.send([address[0], address[1], address[2], address[3], address_checksum], 1, function(reply) { // read start address + checksum
@ -524,12 +524,12 @@ STM32_protocol.prototype.upload_procedure = function(step) {
case 7: case 7:
// go // go
// memory address = 4 bytes, 1st high byte, 4th low byte, 5th byte = checksum XOR(byte 1, byte 2, byte 3, byte 4) // memory address = 4 bytes, 1st high byte, 4th low byte, 5th byte = checksum XOR(byte 1, byte 2, byte 3, byte 4)
console.log('Sending GO command: 0x' + self.hex.extended_linear_address.toString(16)); console.log('Sending GO command: 0x' + self.hex.extended_linear_address[0].toString(16));
self.send([self.command.go, 0xDE], 1, function(reply) { // 0x21 ^ 0xFF self.send([self.command.go, 0xDE], 1, function(reply) { // 0x21 ^ 0xFF
if (self.verify_response(self.status.ACK, reply)) { if (self.verify_response(self.status.ACK, reply)) {
var gt_address = self.hex.extended_linear_address; var gt_address = self.hex.extended_linear_address[0];
var address = [(gt_address >> 24), (gt_address >> 16) & 0x00FF, (gt_address >> 8) & 0x00FF, (gt_address & 0x00FF)]; var address = [(gt_address >> 24), (gt_address >> 16), (gt_address >> 8), gt_address];
var address_checksum = address[0] ^ address[1] ^ address[2] ^ address[3]; var address_checksum = address[0] ^ address[1] ^ address[2] ^ address[3];
self.send([address[0], address[1], address[2], address[3], address_checksum], 1, function(reply) { self.send([address[0], address[1], address[2], address[3], address_checksum], 1, function(reply) {

View file

@ -14,7 +14,7 @@ function read_hex_file(data) {
var result = { var result = {
data: [], data: [],
end_of_file: false, end_of_file: false,
extended_linear_address: 0, extended_linear_address: [],
start_linear_address: 0, start_linear_address: 0,
bytes: 0 bytes: 0
}; };
@ -56,12 +56,14 @@ function read_hex_file(data) {
break; break;
case 0x02: // extended segment address record case 0x02: // extended segment address record
// not implemented // not implemented
console.log('extended segment address record found - NOT IMPLEMENTED !!!');
break; break;
case 0x03: // start segment address record case 0x03: // start segment address record
// not implemented // not implemented
console.log('start segment address record found - NOT IMPLEMENTED !!!');
break; break;
case 0x04: // extended linear address record case 0x04: // extended linear address record
result.extended_linear_address = (parseInt(content.substr(0, 2), 16) << 24) | parseInt(content.substr(2, 2), 16) << 16; result.extended_linear_address.push((parseInt(content.substr(0, 2), 16) << 24) | parseInt(content.substr(2, 2), 16) << 16);
break; break;
case 0x05: // start linear address record case 0x05: // start linear address record
result.start_linear_address = (parseInt(content.substr(0, 2), 16) << 24) | (parseInt(content.substr(2, 2), 16) << 16) | (parseInt(content.substr(4, 2), 16) << 8) | parseInt(content.substr(6, 2), 16); result.start_linear_address = (parseInt(content.substr(0, 2), 16) << 24) | (parseInt(content.substr(2, 2), 16) << 16) | (parseInt(content.substr(4, 2), 16) << 8) | parseInt(content.substr(6, 2), 16);