Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Side by Side Diff: saft_flashrom_util.py

Issue 6594114: saft: update 'flashrom_util' to use new syntax (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/saft.git@master
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 2 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """ This module provides convenience routines to access Flash ROM (EEPROM) 6 """ This module provides convenience routines to access Flash ROM (EEPROM)
7 7
8 saft_flashrom_util is based on utility 'flashrom'. 8 saft_flashrom_util is based on utility 'flashrom'.
9 9
10 Original tool syntax: 10 Original tool syntax:
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 keep_temp_files: boolean flag to control cleaning of temporary files 210 keep_temp_files: boolean flag to control cleaning of temporary files
211 """ 211 """
212 212
213 def __init__(self, verbose=False, keep_temp_files=False): 213 def __init__(self, verbose=False, keep_temp_files=False):
214 """ constructor of flashrom_util. help(flashrom_util) for more info """ 214 """ constructor of flashrom_util. help(flashrom_util) for more info """
215 self.verbose = verbose 215 self.verbose = verbose
216 self.keep_temp_files = keep_temp_files 216 self.keep_temp_files = keep_temp_files
217 self.bios_layout = {} 217 self.bios_layout = {}
218 self.os_if = chromeos_interface.ChromeOSInterface(True) 218 self.os_if = chromeos_interface.ChromeOSInterface(True)
219 self.os_if.init(tempfile.gettempdir()) 219 self.os_if.init(tempfile.gettempdir())
220 self._target_command = ''
220 self._enable_bios_access() 221 self._enable_bios_access()
221 222
222 def _enable_bios_access(self): 223 def _enable_bios_access(self):
223 if not self.os_if.target_hosted(): 224 if not self.os_if.target_hosted():
224 return 225 return
225 value = int(self.os_if.run_shell_command_get_output( 226 self._target_command = '-p internal:bus=spi'
vb 2011/03/02 17:50:08 why not to make it 'flashrom -p internal:bus=spi'
Hung-Te 2011/03/03 06:52:29 Because I'm not sure if SAFT will need to deal wit
226 'iotools mmio_read32 0xfed1f410')[0], 0)
227 value = (value & 0xffff0000) + 0x460
228 self.os_if.run_shell_command(
229 'iotools mmio_write32 0xfed1f410 0x%x' % value)
230 227
231 def get_temp_filename(self, prefix): 228 def get_temp_filename(self, prefix):
232 ''' (internal) Returns name of a temporary file in self.tmp_root ''' 229 ''' (internal) Returns name of a temporary file in self.tmp_root '''
233 (fd, name) = tempfile.mkstemp(prefix=prefix) 230 (fd, name) = tempfile.mkstemp(prefix=prefix)
234 os.close(fd) 231 os.close(fd)
235 return name 232 return name
236 233
237 def remove_temp_file(self, filename): 234 def remove_temp_file(self, filename):
238 """ (internal) Removes a temp file if self.keep_temp_files is false. """ 235 """ (internal) Removes a temp file if self.keep_temp_files is false. """
239 if self.keep_temp_files: 236 if self.keep_temp_files:
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 287
291 scraper = LayoutScraper(self.os_if) 288 scraper = LayoutScraper(self.os_if)
292 self.bios_layout = scraper.get_layout(file_name) 289 self.bios_layout = scraper.get_layout(file_name)
293 290
294 def read_whole(self): 291 def read_whole(self):
295 ''' 292 '''
296 Reads whole flash ROM data. 293 Reads whole flash ROM data.
297 Returns the data read from flash ROM, or empty string for other error. 294 Returns the data read from flash ROM, or empty string for other error.
298 ''' 295 '''
299 tmpfn = self.get_temp_filename('rd_') 296 tmpfn = self.get_temp_filename('rd_')
300 cmd = 'flashrom -r "%s"' % (tmpfn) 297 cmd = 'flashrom %s -r "%s"' % (self._target_command, tmpfn)
301 if self.verbose: 298 if self.verbose:
302 print 'flashrom_util.read_whole(): ', cmd 299 print 'flashrom_util.read_whole(): ', cmd
303 300
304 self.os_if.run_shell_command(cmd) 301 self.os_if.run_shell_command(cmd)
305 result = open(tmpfn, 'rb').read() 302 result = open(tmpfn, 'rb').read()
306 self.set_bios_layout(tmpfn) 303 self.set_bios_layout(tmpfn)
307 304
308 # clean temporary resources 305 # clean temporary resources
309 self.remove_temp_file(tmpfn) 306 self.remove_temp_file(tmpfn)
310 return result 307 return result
311 308
312 def write_partial(self, base_image, write_list, write_layout_map=None): 309 def write_partial(self, base_image, write_list, write_layout_map=None):
313 ''' 310 '''
314 Writes data in sections of write_list to flash ROM. 311 Writes data in sections of write_list to flash ROM.
315 An exception is raised if write operation fails. 312 An exception is raised if write operation fails.
316 ''' 313 '''
317 314
318 if write_layout_map: 315 if write_layout_map:
319 layout_map = write_layout_map 316 layout_map = write_layout_map
320 else: 317 else:
321 layout_map = self.bios_layout 318 layout_map = self.bios_layout
322 319
323 tmpfn = self.get_temp_filename('wr_') 320 tmpfn = self.get_temp_filename('wr_')
324 open(tmpfn, 'wb').write(base_image) 321 open(tmpfn, 'wb').write(base_image)
325 layout_fn = self.create_layout_file(layout_map) 322 layout_fn = self.create_layout_file(layout_map)
326 323
327 cmd = 'flashrom -l "%s" -i %s -w "%s"' % ( 324 cmd = 'flashrom %s -l "%s" -i %s -w "%s"' % (
328 layout_fn, ' -i '.join(write_list), tmpfn) 325 self._target_command, layout_fn, ' -i '.join(write_list), tmpfn)
329 if self.verbose: 326 if self.verbose:
330 print 'flashrom.write_partial(): ', cmd 327 print 'flashrom.write_partial(): ', cmd
331 328
332 self.os_if.run_shell_command(cmd) 329 self.os_if.run_shell_command(cmd)
333 330
334 # clean temporary resources 331 # clean temporary resources
335 self.remove_temp_file(tmpfn) 332 self.remove_temp_file(tmpfn)
336 self.remove_temp_file(layout_fn) 333 self.remove_temp_file(layout_fn)
337 334
338 def write_whole(self, base_image): 335 def write_whole(self, base_image):
339 '''Write the whole base image. ''' 336 '''Write the whole base image. '''
340 layout_map = { 'all': (0, len(base_image) - 1) } 337 layout_map = { 'all': (0, len(base_image) - 1) }
341 self.write_partial(base_image, ('all',), layout_map) 338 self.write_partial(base_image, ('all',), layout_map)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698